; LLVM IR from tangjz/acm-icpc :: codeforces/gym (100825A)

; 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.Node = type { i32, i32, i32, i32, i32, i32, i32 }

@n = external dso_local global i32, align 4
@px = external dso_local global i32, align 4
@py = external dso_local global i32, align 4
@pz = external dso_local global i32, align 4
@a = external dso_local global [101 x %struct.Node], align 16
@.str = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [27 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z3cmpRK4NodeS1_(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(28)) #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z5exgcdiiRiS_(i32 noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z3CRTRiS_ii(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), i32 noundef, i32 noundef) #0

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() #2 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %struct.Node, align 4
  %19 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  br label %20

20:                                               ; preds = %694, %0
  %21 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str, ptr noundef @n, ptr noundef @px, ptr noundef @py, ptr noundef @pz)
  %22 = icmp eq i32 %21, 4
  br i1 %22, label %23, label %695

23:                                               ; preds = %20
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #8
  store i32 0, ptr %2, align 4, !tbaa !5
  br label %24

24:                                               ; preds = %59, %23
  %25 = load i32, ptr %2, align 4, !tbaa !5
  %26 = load i32, ptr @n, align 4, !tbaa !5
  %27 = icmp slt i32 %25, %26
  br i1 %27, label %29, label %28

28:                                               ; preds = %24
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #8
  br label %62

29:                                               ; preds = %24
  %30 = load i32, ptr %2, align 4, !tbaa !5
  %31 = sext i32 %30 to i64
  %32 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %31
  %33 = getelementptr inbounds %struct.Node, ptr %32, i32 0, i32 0
  %34 = load i32, ptr %2, align 4, !tbaa !5
  %35 = sext i32 %34 to i64
  %36 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %35
  %37 = getelementptr inbounds %struct.Node, ptr %36, i32 0, i32 1
  %38 = load i32, ptr %2, align 4, !tbaa !5
  %39 = sext i32 %38 to i64
  %40 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %39
  %41 = getelementptr inbounds %struct.Node, ptr %40, i32 0, i32 2
  %42 = load i32, ptr %2, align 4, !tbaa !5
  %43 = sext i32 %42 to i64
  %44 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %43
  %45 = getelementptr inbounds %struct.Node, ptr %44, i32 0, i32 3
  %46 = load i32, ptr %2, align 4, !tbaa !5
  %47 = sext i32 %46 to i64
  %48 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %47
  %49 = getelementptr inbounds %struct.Node, ptr %48, i32 0, i32 4
  %50 = load i32, ptr %2, align 4, !tbaa !5
  %51 = sext i32 %50 to i64
  %52 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %51
  %53 = getelementptr inbounds %struct.Node, ptr %52, i32 0, i32 5
  %54 = load i32, ptr %2, align 4, !tbaa !5
  %55 = sext i32 %54 to i64
  %56 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %55
  %57 = getelementptr inbounds %struct.Node, ptr %56, i32 0, i32 6
  %58 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.1, ptr noundef %33, ptr noundef %37, ptr noundef %41, ptr noundef %45, ptr noundef %49, ptr noundef %53, ptr noundef %57)
  br label %59

59:                                               ; preds = %29
  %60 = load i32, ptr %2, align 4, !tbaa !5
  %61 = add nsw i32 %60, 1
  store i32 %61, ptr %2, align 4, !tbaa !5
  br label %24, !llvm.loop !9

62:                                               ; preds = %28
  br label %63

63:                                               ; preds = %641, %62
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #8
  store i32 1061109567, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #8
  store i32 0, ptr %4, align 4, !tbaa !5
  br label %64

64:                                               ; preds = %379, %63
  %65 = load i32, ptr %4, align 4, !tbaa !5
  %66 = load i32, ptr @n, align 4, !tbaa !5
  %67 = icmp slt i32 %65, %66
  br i1 %67, label %69, label %68

68:                                               ; preds = %64
  store i32 9, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #8
  br label %382

69:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #8
  %70 = load i32, ptr %4, align 4, !tbaa !5
  %71 = add nsw i32 %70, 1
  store i32 %71, ptr %6, align 4, !tbaa !5
  br label %72

72:                                               ; preds = %375, %69
  %73 = load i32, ptr %6, align 4, !tbaa !5
  %74 = load i32, ptr @n, align 4, !tbaa !5
  %75 = icmp slt i32 %73, %74
  br i1 %75, label %77, label %76

76:                                               ; preds = %72
  store i32 12, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #8
  br label %378

77:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #8
  store i32 0, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #8
  store i32 1, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  %78 = load i32, ptr %4, align 4, !tbaa !5
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %79
  %81 = getelementptr inbounds %struct.Node, ptr %80, i32 0, i32 4
  %82 = load i32, ptr %81, align 4, !tbaa !11
  %83 = load i32, ptr %6, align 4, !tbaa !5
  %84 = sext i32 %83 to i64
  %85 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %84
  %86 = getelementptr inbounds %struct.Node, ptr %85, i32 0, i32 4
  %87 = load i32, ptr %86, align 4, !tbaa !11
  %88 = sub nsw i32 %82, %87
  %89 = load i32, ptr @px, align 4, !tbaa !5
  %90 = srem i32 %88, %89
  store i32 %90, ptr %9, align 4, !tbaa !5
  %91 = icmp slt i32 %90, 0
  br i1 %91, label %92, label %96

92:                                               ; preds = %77
  %93 = load i32, ptr @px, align 4, !tbaa !5
  %94 = load i32, ptr %9, align 4, !tbaa !5
  %95 = add nsw i32 %94, %93
  store i32 %95, ptr %9, align 4, !tbaa !5
  br label %96

96:                                               ; preds = %92, %77
  %97 = load i32, ptr %9, align 4, !tbaa !5
  %98 = icmp ne i32 %97, 0
  br i1 %98, label %99, label %156

99:                                               ; preds = %96
  %100 = load i32, ptr %6, align 4, !tbaa !5
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %101
  %103 = getelementptr inbounds %struct.Node, ptr %102, i32 0, i32 1
  %104 = load i32, ptr %103, align 4, !tbaa !13
  %105 = load i32, ptr %4, align 4, !tbaa !5
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %106
  %108 = getelementptr inbounds %struct.Node, ptr %107, i32 0, i32 1
  %109 = load i32, ptr %108, align 4, !tbaa !13
  %110 = sub nsw i32 %104, %109
  %111 = call i32 @llvm.abs.i32(i32 %110, i1 true)
  %112 = load i32, ptr @px, align 4, !tbaa !5
  %113 = call noundef i32 @_ZSt5__gcdIiET_S0_S0_(i32 noundef %111, i32 noundef %112)
  %114 = load i32, ptr %9, align 4, !tbaa !5
  %115 = load i32, ptr @px, align 4, !tbaa !5
  %116 = call noundef i32 @_Z5exgcdiiRiS_(i32 noundef %114, i32 noundef %115, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store i32 %116, ptr %12, align 4, !tbaa !5
  %117 = srem i32 %113, %116
  %118 = icmp ne i32 %117, 0
  br i1 %118, label %119, label %120

119:                                              ; preds = %99
  store i32 14, ptr %5, align 4
  br label %372

120:                                              ; preds = %99
  %121 = load i32, ptr %10, align 4, !tbaa !5
  %122 = sext i32 %121 to i64
  %123 = load i32, ptr %6, align 4, !tbaa !5
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %124
  %126 = getelementptr inbounds %struct.Node, ptr %125, i32 0, i32 1
  %127 = load i32, ptr %126, align 4, !tbaa !13
  %128 = load i32, ptr %4, align 4, !tbaa !5
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %129
  %131 = getelementptr inbounds %struct.Node, ptr %130, i32 0, i32 1
  %132 = load i32, ptr %131, align 4, !tbaa !13
  %133 = sub nsw i32 %127, %132
  %134 = sext i32 %133 to i64
  %135 = mul nsw i64 %122, %134
  %136 = load i32, ptr @px, align 4, !tbaa !5
  %137 = sext i32 %136 to i64
  %138 = srem i64 %135, %137
  %139 = load i32, ptr %12, align 4, !tbaa !5
  %140 = sext i32 %139 to i64
  %141 = sdiv i64 %138, %140
  %142 = trunc i64 %141 to i32
  store i32 %142, ptr %9, align 4, !tbaa !5
  %143 = icmp slt i32 %142, 0
  br i1 %143, label %144, label %148

144:                                              ; preds = %120
  %145 = load i32, ptr @px, align 4, !tbaa !5
  %146 = load i32, ptr %9, align 4, !tbaa !5
  %147 = add nsw i32 %146, %145
  store i32 %147, ptr %9, align 4, !tbaa !5
  br label %148

148:                                              ; preds = %144, %120
  %149 = load i32, ptr %9, align 4, !tbaa !5
  %150 = load i32, ptr @px, align 4, !tbaa !5
  %151 = load i32, ptr %12, align 4, !tbaa !5
  %152 = sdiv i32 %150, %151
  %153 = call noundef zeroext i1 @_Z3CRTRiS_ii(ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %8, i32 noundef %149, i32 noundef %152)
  br i1 %153, label %155, label %154

154:                                              ; preds = %148
  store i32 14, ptr %5, align 4
  br label %372

155:                                              ; preds = %148
  br label %173

156:                                              ; preds = %96
  %157 = load i32, ptr %6, align 4, !tbaa !5
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %158
  %160 = getelementptr inbounds %struct.Node, ptr %159, i32 0, i32 1
  %161 = load i32, ptr %160, align 4, !tbaa !13
  %162 = load i32, ptr %4, align 4, !tbaa !5
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %163
  %165 = getelementptr inbounds %struct.Node, ptr %164, i32 0, i32 1
  %166 = load i32, ptr %165, align 4, !tbaa !13
  %167 = sub nsw i32 %161, %166
  %168 = load i32, ptr @px, align 4, !tbaa !5
  %169 = srem i32 %167, %168
  %170 = icmp ne i32 %169, 0
  br i1 %170, label %171, label %172

171:                                              ; preds = %156
  store i32 14, ptr %5, align 4
  br label %372

172:                                              ; preds = %156
  br label %173

173:                                              ; preds = %172, %155
  %174 = load i32, ptr %4, align 4, !tbaa !5
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %175
  %177 = getelementptr inbounds %struct.Node, ptr %176, i32 0, i32 5
  %178 = load i32, ptr %177, align 4, !tbaa !14
  %179 = load i32, ptr %6, align 4, !tbaa !5
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %180
  %182 = getelementptr inbounds %struct.Node, ptr %181, i32 0, i32 5
  %183 = load i32, ptr %182, align 4, !tbaa !14
  %184 = sub nsw i32 %178, %183
  %185 = load i32, ptr @py, align 4, !tbaa !5
  %186 = srem i32 %184, %185
  store i32 %186, ptr %9, align 4, !tbaa !5
  %187 = icmp slt i32 %186, 0
  br i1 %187, label %188, label %192

188:                                              ; preds = %173
  %189 = load i32, ptr @py, align 4, !tbaa !5
  %190 = load i32, ptr %9, align 4, !tbaa !5
  %191 = add nsw i32 %190, %189
  store i32 %191, ptr %9, align 4, !tbaa !5
  br label %192

192:                                              ; preds = %188, %173
  %193 = load i32, ptr %9, align 4, !tbaa !5
  %194 = icmp ne i32 %193, 0
  br i1 %194, label %195, label %252

195:                                              ; preds = %192
  %196 = load i32, ptr %6, align 4, !tbaa !5
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %197
  %199 = getelementptr inbounds %struct.Node, ptr %198, i32 0, i32 2
  %200 = load i32, ptr %199, align 4, !tbaa !15
  %201 = load i32, ptr %4, align 4, !tbaa !5
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %202
  %204 = getelementptr inbounds %struct.Node, ptr %203, i32 0, i32 2
  %205 = load i32, ptr %204, align 4, !tbaa !15
  %206 = sub nsw i32 %200, %205
  %207 = call i32 @llvm.abs.i32(i32 %206, i1 true)
  %208 = load i32, ptr @py, align 4, !tbaa !5
  %209 = call noundef i32 @_ZSt5__gcdIiET_S0_S0_(i32 noundef %207, i32 noundef %208)
  %210 = load i32, ptr %9, align 4, !tbaa !5
  %211 = load i32, ptr @py, align 4, !tbaa !5
  %212 = call noundef i32 @_Z5exgcdiiRiS_(i32 noundef %210, i32 noundef %211, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store i32 %212, ptr %12, align 4, !tbaa !5
  %213 = srem i32 %209, %212
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %215, label %216

215:                                              ; preds = %195
  store i32 14, ptr %5, align 4
  br label %372

216:                                              ; preds = %195
  %217 = load i32, ptr %10, align 4, !tbaa !5
  %218 = sext i32 %217 to i64
  %219 = load i32, ptr %6, align 4, !tbaa !5
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %220
  %222 = getelementptr inbounds %struct.Node, ptr %221, i32 0, i32 2
  %223 = load i32, ptr %222, align 4, !tbaa !15
  %224 = load i32, ptr %4, align 4, !tbaa !5
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %225
  %227 = getelementptr inbounds %struct.Node, ptr %226, i32 0, i32 2
  %228 = load i32, ptr %227, align 4, !tbaa !15
  %229 = sub nsw i32 %223, %228
  %230 = sext i32 %229 to i64
  %231 = mul nsw i64 %218, %230
  %232 = load i32, ptr @py, align 4, !tbaa !5
  %233 = sext i32 %232 to i64
  %234 = srem i64 %231, %233
  %235 = load i32, ptr %12, align 4, !tbaa !5
  %236 = sext i32 %235 to i64
  %237 = sdiv i64 %234, %236
  %238 = trunc i64 %237 to i32
  store i32 %238, ptr %9, align 4, !tbaa !5
  %239 = icmp slt i32 %238, 0
  br i1 %239, label %240, label %244

240:                                              ; preds = %216
  %241 = load i32, ptr @py, align 4, !tbaa !5
  %242 = load i32, ptr %9, align 4, !tbaa !5
  %243 = add nsw i32 %242, %241
  store i32 %243, ptr %9, align 4, !tbaa !5
  br label %244

244:                                              ; preds = %240, %216
  %245 = load i32, ptr %9, align 4, !tbaa !5
  %246 = load i32, ptr @py, align 4, !tbaa !5
  %247 = load i32, ptr %12, align 4, !tbaa !5
  %248 = sdiv i32 %246, %247
  %249 = call noundef zeroext i1 @_Z3CRTRiS_ii(ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %8, i32 noundef %245, i32 noundef %248)
  br i1 %249, label %251, label %250

250:                                              ; preds = %244
  store i32 14, ptr %5, align 4
  br label %372

251:                                              ; preds = %244
  br label %269

252:                                              ; preds = %192
  %253 = load i32, ptr %6, align 4, !tbaa !5
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %254
  %256 = getelementptr inbounds %struct.Node, ptr %255, i32 0, i32 2
  %257 = load i32, ptr %256, align 4, !tbaa !15
  %258 = load i32, ptr %4, align 4, !tbaa !5
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %259
  %261 = getelementptr inbounds %struct.Node, ptr %260, i32 0, i32 2
  %262 = load i32, ptr %261, align 4, !tbaa !15
  %263 = sub nsw i32 %257, %262
  %264 = load i32, ptr @py, align 4, !tbaa !5
  %265 = srem i32 %263, %264
  %266 = icmp ne i32 %265, 0
  br i1 %266, label %267, label %268

267:                                              ; preds = %252
  store i32 14, ptr %5, align 4
  br label %372

268:                                              ; preds = %252
  br label %269

269:                                              ; preds = %268, %251
  %270 = load i32, ptr %4, align 4, !tbaa !5
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %271
  %273 = getelementptr inbounds %struct.Node, ptr %272, i32 0, i32 6
  %274 = load i32, ptr %273, align 4, !tbaa !16
  %275 = load i32, ptr %6, align 4, !tbaa !5
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %276
  %278 = getelementptr inbounds %struct.Node, ptr %277, i32 0, i32 6
  %279 = load i32, ptr %278, align 4, !tbaa !16
  %280 = sub nsw i32 %274, %279
  %281 = load i32, ptr @pz, align 4, !tbaa !5
  %282 = srem i32 %280, %281
  store i32 %282, ptr %9, align 4, !tbaa !5
  %283 = icmp slt i32 %282, 0
  br i1 %283, label %284, label %288

284:                                              ; preds = %269
  %285 = load i32, ptr @pz, align 4, !tbaa !5
  %286 = load i32, ptr %9, align 4, !tbaa !5
  %287 = add nsw i32 %286, %285
  store i32 %287, ptr %9, align 4, !tbaa !5
  br label %288

288:                                              ; preds = %284, %269
  %289 = load i32, ptr %9, align 4, !tbaa !5
  %290 = icmp ne i32 %289, 0
  br i1 %290, label %291, label %348

291:                                              ; preds = %288
  %292 = load i32, ptr %6, align 4, !tbaa !5
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %293
  %295 = getelementptr inbounds %struct.Node, ptr %294, i32 0, i32 3
  %296 = load i32, ptr %295, align 4, !tbaa !17
  %297 = load i32, ptr %4, align 4, !tbaa !5
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %298
  %300 = getelementptr inbounds %struct.Node, ptr %299, i32 0, i32 3
  %301 = load i32, ptr %300, align 4, !tbaa !17
  %302 = sub nsw i32 %296, %301
  %303 = call i32 @llvm.abs.i32(i32 %302, i1 true)
  %304 = load i32, ptr @pz, align 4, !tbaa !5
  %305 = call noundef i32 @_ZSt5__gcdIiET_S0_S0_(i32 noundef %303, i32 noundef %304)
  %306 = load i32, ptr %9, align 4, !tbaa !5
  %307 = load i32, ptr @pz, align 4, !tbaa !5
  %308 = call noundef i32 @_Z5exgcdiiRiS_(i32 noundef %306, i32 noundef %307, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store i32 %308, ptr %12, align 4, !tbaa !5
  %309 = srem i32 %305, %308
  %310 = icmp ne i32 %309, 0
  br i1 %310, label %311, label %312

311:                                              ; preds = %291
  store i32 14, ptr %5, align 4
  br label %372

312:                                              ; preds = %291
  %313 = load i32, ptr %10, align 4, !tbaa !5
  %314 = sext i32 %313 to i64
  %315 = load i32, ptr %6, align 4, !tbaa !5
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %316
  %318 = getelementptr inbounds %struct.Node, ptr %317, i32 0, i32 3
  %319 = load i32, ptr %318, align 4, !tbaa !17
  %320 = load i32, ptr %4, align 4, !tbaa !5
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %321
  %323 = getelementptr inbounds %struct.Node, ptr %322, i32 0, i32 3
  %324 = load i32, ptr %323, align 4, !tbaa !17
  %325 = sub nsw i32 %319, %324
  %326 = sext i32 %325 to i64
  %327 = mul nsw i64 %314, %326
  %328 = load i32, ptr @pz, align 4, !tbaa !5
  %329 = sext i32 %328 to i64
  %330 = srem i64 %327, %329
  %331 = load i32, ptr %12, align 4, !tbaa !5
  %332 = sext i32 %331 to i64
  %333 = sdiv i64 %330, %332
  %334 = trunc i64 %333 to i32
  store i32 %334, ptr %9, align 4, !tbaa !5
  %335 = icmp slt i32 %334, 0
  br i1 %335, label %336, label %340

336:                                              ; preds = %312
  %337 = load i32, ptr @pz, align 4, !tbaa !5
  %338 = load i32, ptr %9, align 4, !tbaa !5
  %339 = add nsw i32 %338, %337
  store i32 %339, ptr %9, align 4, !tbaa !5
  br label %340

340:                                              ; preds = %336, %312
  %341 = load i32, ptr %9, align 4, !tbaa !5
  %342 = load i32, ptr @pz, align 4, !tbaa !5
  %343 = load i32, ptr %12, align 4, !tbaa !5
  %344 = sdiv i32 %342, %343
  %345 = call noundef zeroext i1 @_Z3CRTRiS_ii(ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %8, i32 noundef %341, i32 noundef %344)
  br i1 %345, label %347, label %346

346:                                              ; preds = %340
  store i32 14, ptr %5, align 4
  br label %372

347:                                              ; preds = %340
  br label %365

348:                                              ; preds = %288
  %349 = load i32, ptr %6, align 4, !tbaa !5
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %350
  %352 = getelementptr inbounds %struct.Node, ptr %351, i32 0, i32 3
  %353 = load i32, ptr %352, align 4, !tbaa !17
  %354 = load i32, ptr %4, align 4, !tbaa !5
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %355
  %357 = getelementptr inbounds %struct.Node, ptr %356, i32 0, i32 3
  %358 = load i32, ptr %357, align 4, !tbaa !17
  %359 = sub nsw i32 %353, %358
  %360 = load i32, ptr @pz, align 4, !tbaa !5
  %361 = srem i32 %359, %360
  %362 = icmp ne i32 %361, 0
  br i1 %362, label %363, label %364

363:                                              ; preds = %348
  store i32 14, ptr %5, align 4
  br label %372

364:                                              ; preds = %348
  br label %365

365:                                              ; preds = %364, %347
  %366 = load i32, ptr %3, align 4, !tbaa !5
  %367 = load i32, ptr %7, align 4, !tbaa !5
  %368 = icmp sgt i32 %366, %367
  br i1 %368, label %369, label %371

369:                                              ; preds = %365
  %370 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %370, ptr %3, align 4, !tbaa !5
  br label %371

371:                                              ; preds = %369, %365
  store i32 0, ptr %5, align 4
  br label %372

372:                                              ; preds = %371, %363, %346, %311, %267, %250, %215, %171, %154, %119
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  %373 = load i32, ptr %5, align 4
  switch i32 %373, label %696 [
    i32 0, label %374
    i32 14, label %375
  ]

374:                                              ; preds = %372
  br label %375

375:                                              ; preds = %374, %372
  %376 = load i32, ptr %6, align 4, !tbaa !5
  %377 = add nsw i32 %376, 1
  store i32 %377, ptr %6, align 4, !tbaa !5
  br label %72, !llvm.loop !18

378:                                              ; preds = %76
  br label %379

379:                                              ; preds = %378
  %380 = load i32, ptr %4, align 4, !tbaa !5
  %381 = add nsw i32 %380, 1
  store i32 %381, ptr %4, align 4, !tbaa !5
  br label %64, !llvm.loop !19

382:                                              ; preds = %68
  %383 = load i32, ptr %3, align 4, !tbaa !5
  %384 = icmp eq i32 %383, 1061109567
  br i1 %384, label %385, label %386

385:                                              ; preds = %382
  store i32 8, ptr %5, align 4
  br label %639

386:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  store i32 0, ptr %13, align 4, !tbaa !5
  br label %387

387:                                              ; preds = %495, %386
  %388 = load i32, ptr %13, align 4, !tbaa !5
  %389 = load i32, ptr @n, align 4, !tbaa !5
  %390 = icmp slt i32 %388, %389
  br i1 %390, label %392, label %391

391:                                              ; preds = %387
  store i32 15, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  br label %498

392:                                              ; preds = %387
  %393 = load i32, ptr %13, align 4, !tbaa !5
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %394
  %396 = getelementptr inbounds %struct.Node, ptr %395, i32 0, i32 1
  %397 = load i32, ptr %396, align 4, !tbaa !13
  %398 = sext i32 %397 to i64
  %399 = load i32, ptr %3, align 4, !tbaa !5
  %400 = sext i32 %399 to i64
  %401 = load i32, ptr %13, align 4, !tbaa !5
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %402
  %404 = getelementptr inbounds %struct.Node, ptr %403, i32 0, i32 4
  %405 = load i32, ptr %404, align 4, !tbaa !11
  %406 = sext i32 %405 to i64
  %407 = mul nsw i64 %400, %406
  %408 = add nsw i64 %398, %407
  %409 = load i32, ptr @px, align 4, !tbaa !5
  %410 = sext i32 %409 to i64
  %411 = srem i64 %408, %410
  %412 = trunc i64 %411 to i32
  %413 = load i32, ptr %13, align 4, !tbaa !5
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %414
  %416 = getelementptr inbounds %struct.Node, ptr %415, i32 0, i32 1
  store i32 %412, ptr %416, align 4, !tbaa !13
  %417 = icmp slt i32 %412, 0
  br i1 %417, label %418, label %426

418:                                              ; preds = %392
  %419 = load i32, ptr @px, align 4, !tbaa !5
  %420 = load i32, ptr %13, align 4, !tbaa !5
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %421
  %423 = getelementptr inbounds %struct.Node, ptr %422, i32 0, i32 1
  %424 = load i32, ptr %423, align 4, !tbaa !13
  %425 = add nsw i32 %424, %419
  store i32 %425, ptr %423, align 4, !tbaa !13
  br label %426

426:                                              ; preds = %418, %392
  %427 = load i32, ptr %13, align 4, !tbaa !5
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %428
  %430 = getelementptr inbounds %struct.Node, ptr %429, i32 0, i32 2
  %431 = load i32, ptr %430, align 4, !tbaa !15
  %432 = sext i32 %431 to i64
  %433 = load i32, ptr %3, align 4, !tbaa !5
  %434 = sext i32 %433 to i64
  %435 = load i32, ptr %13, align 4, !tbaa !5
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %436
  %438 = getelementptr inbounds %struct.Node, ptr %437, i32 0, i32 5
  %439 = load i32, ptr %438, align 4, !tbaa !14
  %440 = sext i32 %439 to i64
  %441 = mul nsw i64 %434, %440
  %442 = add nsw i64 %432, %441
  %443 = load i32, ptr @py, align 4, !tbaa !5
  %444 = sext i32 %443 to i64
  %445 = srem i64 %442, %444
  %446 = trunc i64 %445 to i32
  %447 = load i32, ptr %13, align 4, !tbaa !5
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %448
  %450 = getelementptr inbounds %struct.Node, ptr %449, i32 0, i32 2
  store i32 %446, ptr %450, align 4, !tbaa !15
  %451 = icmp slt i32 %446, 0
  br i1 %451, label %452, label %460

452:                                              ; preds = %426
  %453 = load i32, ptr @py, align 4, !tbaa !5
  %454 = load i32, ptr %13, align 4, !tbaa !5
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %455
  %457 = getelementptr inbounds %struct.Node, ptr %456, i32 0, i32 2
  %458 = load i32, ptr %457, align 4, !tbaa !15
  %459 = add nsw i32 %458, %453
  store i32 %459, ptr %457, align 4, !tbaa !15
  br label %460

460:                                              ; preds = %452, %426
  %461 = load i32, ptr %13, align 4, !tbaa !5
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %462
  %464 = getelementptr inbounds %struct.Node, ptr %463, i32 0, i32 3
  %465 = load i32, ptr %464, align 4, !tbaa !17
  %466 = sext i32 %465 to i64
  %467 = load i32, ptr %3, align 4, !tbaa !5
  %468 = sext i32 %467 to i64
  %469 = load i32, ptr %13, align 4, !tbaa !5
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %470
  %472 = getelementptr inbounds %struct.Node, ptr %471, i32 0, i32 6
  %473 = load i32, ptr %472, align 4, !tbaa !16
  %474 = sext i32 %473 to i64
  %475 = mul nsw i64 %468, %474
  %476 = add nsw i64 %466, %475
  %477 = load i32, ptr @pz, align 4, !tbaa !5
  %478 = sext i32 %477 to i64
  %479 = srem i64 %476, %478
  %480 = trunc i64 %479 to i32
  %481 = load i32, ptr %13, align 4, !tbaa !5
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %482
  %484 = getelementptr inbounds %struct.Node, ptr %483, i32 0, i32 3
  store i32 %480, ptr %484, align 4, !tbaa !17
  %485 = icmp slt i32 %480, 0
  br i1 %485, label %486, label %494

486:                                              ; preds = %460
  %487 = load i32, ptr @pz, align 4, !tbaa !5
  %488 = load i32, ptr %13, align 4, !tbaa !5
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %489
  %491 = getelementptr inbounds %struct.Node, ptr %490, i32 0, i32 3
  %492 = load i32, ptr %491, align 4, !tbaa !17
  %493 = add nsw i32 %492, %487
  store i32 %493, ptr %491, align 4, !tbaa !17
  br label %494

494:                                              ; preds = %486, %460
  br label %495

495:                                              ; preds = %494
  %496 = load i32, ptr %13, align 4, !tbaa !5
  %497 = add nsw i32 %496, 1
  store i32 %497, ptr %13, align 4, !tbaa !5
  br label %387, !llvm.loop !20

498:                                              ; preds = %391
  %499 = load i32, ptr @n, align 4, !tbaa !5
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds %struct.Node, ptr @a, i64 %500
  call void @_ZSt4sortIP4NodeEvT_S2_(ptr noundef @a, ptr noundef %501)
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  store i32 0, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  store i32 0, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  store i32 0, ptr %16, align 4, !tbaa !5
  br label %502

502:                                              ; preds = %620, %498
  %503 = load i32, ptr %15, align 4, !tbaa !5
  %504 = load i32, ptr @n, align 4, !tbaa !5
  %505 = icmp slt i32 %503, %504
  br i1 %505, label %507, label %506

506:                                              ; preds = %502
  store i32 18, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  br label %637

507:                                              ; preds = %502
  br label %508

508:                                              ; preds = %551, %507
  %509 = load i32, ptr %16, align 4, !tbaa !5
  %510 = load i32, ptr @n, align 4, !tbaa !5
  %511 = icmp slt i32 %509, %510
  br i1 %511, label %512, label %548

512:                                              ; preds = %508
  %513 = load i32, ptr %15, align 4, !tbaa !5
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %514
  %516 = getelementptr inbounds %struct.Node, ptr %515, i32 0, i32 1
  %517 = load i32, ptr %516, align 4, !tbaa !13
  %518 = load i32, ptr %16, align 4, !tbaa !5
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %519
  %521 = getelementptr inbounds %struct.Node, ptr %520, i32 0, i32 1
  %522 = load i32, ptr %521, align 4, !tbaa !13
  %523 = icmp eq i32 %517, %522
  br i1 %523, label %524, label %548

524:                                              ; preds = %512
  %525 = load i32, ptr %15, align 4, !tbaa !5
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %526
  %528 = getelementptr inbounds %struct.Node, ptr %527, i32 0, i32 2
  %529 = load i32, ptr %528, align 4, !tbaa !15
  %530 = load i32, ptr %16, align 4, !tbaa !5
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %531
  %533 = getelementptr inbounds %struct.Node, ptr %532, i32 0, i32 2
  %534 = load i32, ptr %533, align 4, !tbaa !15
  %535 = icmp eq i32 %529, %534
  br i1 %535, label %536, label %548

536:                                              ; preds = %524
  %537 = load i32, ptr %15, align 4, !tbaa !5
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %538
  %540 = getelementptr inbounds %struct.Node, ptr %539, i32 0, i32 3
  %541 = load i32, ptr %540, align 4, !tbaa !17
  %542 = load i32, ptr %16, align 4, !tbaa !5
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %543
  %545 = getelementptr inbounds %struct.Node, ptr %544, i32 0, i32 3
  %546 = load i32, ptr %545, align 4, !tbaa !17
  %547 = icmp eq i32 %541, %546
  br label %548

548:                                              ; preds = %536, %524, %512, %508
  %549 = phi i1 [ false, %524 ], [ false, %512 ], [ false, %508 ], [ %547, %536 ]
  br i1 %549, label %550, label %554

550:                                              ; preds = %548
  br label %551

551:                                              ; preds = %550
  %552 = load i32, ptr %16, align 4, !tbaa !5
  %553 = add nsw i32 %552, 1
  store i32 %553, ptr %16, align 4, !tbaa !5
  br label %508, !llvm.loop !21

554:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %555 = load i32, ptr %16, align 4, !tbaa !5
  %556 = load i32, ptr %15, align 4, !tbaa !5
  %557 = sub nsw i32 %555, %556
  store i32 %557, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 28, ptr %18) #8
  %558 = getelementptr inbounds %struct.Node, ptr %18, i32 0, i32 0
  store i32 0, ptr %558, align 4, !tbaa !22
  %559 = getelementptr inbounds %struct.Node, ptr %18, i32 0, i32 1
  %560 = load i32, ptr %15, align 4, !tbaa !5
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %561
  %563 = getelementptr inbounds %struct.Node, ptr %562, i32 0, i32 1
  %564 = load i32, ptr %563, align 4, !tbaa !13
  store i32 %564, ptr %559, align 4, !tbaa !13
  %565 = getelementptr inbounds %struct.Node, ptr %18, i32 0, i32 2
  %566 = load i32, ptr %15, align 4, !tbaa !5
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %567
  %569 = getelementptr inbounds %struct.Node, ptr %568, i32 0, i32 2
  %570 = load i32, ptr %569, align 4, !tbaa !15
  store i32 %570, ptr %565, align 4, !tbaa !15
  %571 = getelementptr inbounds %struct.Node, ptr %18, i32 0, i32 3
  %572 = load i32, ptr %15, align 4, !tbaa !5
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %573
  %575 = getelementptr inbounds %struct.Node, ptr %574, i32 0, i32 3
  %576 = load i32, ptr %575, align 4, !tbaa !17
  store i32 %576, ptr %571, align 4, !tbaa !17
  %577 = getelementptr inbounds %struct.Node, ptr %18, i32 0, i32 4
  store i32 0, ptr %577, align 4, !tbaa !11
  %578 = getelementptr inbounds %struct.Node, ptr %18, i32 0, i32 5
  store i32 0, ptr %578, align 4, !tbaa !14
  %579 = getelementptr inbounds %struct.Node, ptr %18, i32 0, i32 6
  store i32 0, ptr %579, align 4, !tbaa !16
  br label %580

580:                                              ; preds = %617, %554
  %581 = load i32, ptr %15, align 4, !tbaa !5
  %582 = load i32, ptr %16, align 4, !tbaa !5
  %583 = icmp slt i32 %581, %582
  br i1 %583, label %584, label %620

584:                                              ; preds = %580
  %585 = load i32, ptr %15, align 4, !tbaa !5
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %586
  %588 = getelementptr inbounds %struct.Node, ptr %587, i32 0, i32 0
  %589 = load i32, ptr %588, align 4, !tbaa !22
  %590 = getelementptr inbounds %struct.Node, ptr %18, i32 0, i32 0
  %591 = load i32, ptr %590, align 4, !tbaa !22
  %592 = add nsw i32 %591, %589
  store i32 %592, ptr %590, align 4, !tbaa !22
  %593 = load i32, ptr %15, align 4, !tbaa !5
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %594
  %596 = getelementptr inbounds %struct.Node, ptr %595, i32 0, i32 4
  %597 = load i32, ptr %596, align 4, !tbaa !11
  %598 = getelementptr inbounds %struct.Node, ptr %18, i32 0, i32 4
  %599 = load i32, ptr %598, align 4, !tbaa !11
  %600 = add nsw i32 %599, %597
  store i32 %600, ptr %598, align 4, !tbaa !11
  %601 = load i32, ptr %15, align 4, !tbaa !5
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %602
  %604 = getelementptr inbounds %struct.Node, ptr %603, i32 0, i32 5
  %605 = load i32, ptr %604, align 4, !tbaa !14
  %606 = getelementptr inbounds %struct.Node, ptr %18, i32 0, i32 5
  %607 = load i32, ptr %606, align 4, !tbaa !14
  %608 = add nsw i32 %607, %605
  store i32 %608, ptr %606, align 4, !tbaa !14
  %609 = load i32, ptr %15, align 4, !tbaa !5
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %610
  %612 = getelementptr inbounds %struct.Node, ptr %611, i32 0, i32 6
  %613 = load i32, ptr %612, align 4, !tbaa !16
  %614 = getelementptr inbounds %struct.Node, ptr %18, i32 0, i32 6
  %615 = load i32, ptr %614, align 4, !tbaa !16
  %616 = add nsw i32 %615, %613
  store i32 %616, ptr %614, align 4, !tbaa !16
  br label %617

617:                                              ; preds = %584
  %618 = load i32, ptr %15, align 4, !tbaa !5
  %619 = add nsw i32 %618, 1
  store i32 %619, ptr %15, align 4, !tbaa !5
  br label %580, !llvm.loop !23

620:                                              ; preds = %580
  %621 = load i32, ptr %17, align 4, !tbaa !5
  %622 = getelementptr inbounds %struct.Node, ptr %18, i32 0, i32 4
  %623 = load i32, ptr %622, align 4, !tbaa !11
  %624 = sdiv i32 %623, %621
  store i32 %624, ptr %622, align 4, !tbaa !11
  %625 = load i32, ptr %17, align 4, !tbaa !5
  %626 = getelementptr inbounds %struct.Node, ptr %18, i32 0, i32 5
  %627 = load i32, ptr %626, align 4, !tbaa !14
  %628 = sdiv i32 %627, %625
  store i32 %628, ptr %626, align 4, !tbaa !14
  %629 = load i32, ptr %17, align 4, !tbaa !5
  %630 = getelementptr inbounds %struct.Node, ptr %18, i32 0, i32 6
  %631 = load i32, ptr %630, align 4, !tbaa !16
  %632 = sdiv i32 %631, %629
  store i32 %632, ptr %630, align 4, !tbaa !16
  %633 = load i32, ptr %14, align 4, !tbaa !5
  %634 = add nsw i32 %633, 1
  store i32 %634, ptr %14, align 4, !tbaa !5
  %635 = sext i32 %633 to i64
  %636 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %635
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %636, ptr align 4 %18, i64 28, i1 false), !tbaa.struct !24
  call void @llvm.lifetime.end.p0(i64 28, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %502, !llvm.loop !25

637:                                              ; preds = %506
  %638 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %638, ptr @n, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  store i32 0, ptr %5, align 4
  br label %639

639:                                              ; preds = %637, %385
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #8
  %640 = load i32, ptr %5, align 4
  switch i32 %640, label %696 [
    i32 0, label %641
    i32 8, label %642
  ]

641:                                              ; preds = %639
  br label %63, !llvm.loop !26

642:                                              ; preds = %639
  %643 = load i32, ptr @n, align 4, !tbaa !5
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds %struct.Node, ptr @a, i64 %644
  call void @_ZSt4sortIP4NodePFbRKS0_S3_EEvT_S6_T0_(ptr noundef @a, ptr noundef %645, ptr noundef @_Z3cmpRK4NodeS1_)
  %646 = load i32, ptr @n, align 4, !tbaa !5
  %647 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, i32 noundef %646)
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  store i32 0, ptr %19, align 4, !tbaa !5
  br label %648

648:                                              ; preds = %691, %642
  %649 = load i32, ptr %19, align 4, !tbaa !5
  %650 = load i32, ptr @n, align 4, !tbaa !5
  %651 = icmp slt i32 %649, %650
  br i1 %651, label %653, label %652

652:                                              ; preds = %648
  store i32 26, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  br label %694

653:                                              ; preds = %648
  %654 = load i32, ptr %19, align 4, !tbaa !5
  %655 = load i32, ptr %19, align 4, !tbaa !5
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %656
  %658 = getelementptr inbounds %struct.Node, ptr %657, i32 0, i32 0
  %659 = load i32, ptr %658, align 4, !tbaa !22
  %660 = load i32, ptr %19, align 4, !tbaa !5
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %661
  %663 = getelementptr inbounds %struct.Node, ptr %662, i32 0, i32 1
  %664 = load i32, ptr %663, align 4, !tbaa !13
  %665 = load i32, ptr %19, align 4, !tbaa !5
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %666
  %668 = getelementptr inbounds %struct.Node, ptr %667, i32 0, i32 2
  %669 = load i32, ptr %668, align 4, !tbaa !15
  %670 = load i32, ptr %19, align 4, !tbaa !5
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %671
  %673 = getelementptr inbounds %struct.Node, ptr %672, i32 0, i32 3
  %674 = load i32, ptr %673, align 4, !tbaa !17
  %675 = load i32, ptr %19, align 4, !tbaa !5
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %676
  %678 = getelementptr inbounds %struct.Node, ptr %677, i32 0, i32 4
  %679 = load i32, ptr %678, align 4, !tbaa !11
  %680 = load i32, ptr %19, align 4, !tbaa !5
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %681
  %683 = getelementptr inbounds %struct.Node, ptr %682, i32 0, i32 5
  %684 = load i32, ptr %683, align 4, !tbaa !14
  %685 = load i32, ptr %19, align 4, !tbaa !5
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %686
  %688 = getelementptr inbounds %struct.Node, ptr %687, i32 0, i32 6
  %689 = load i32, ptr %688, align 4, !tbaa !16
  %690 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, i32 noundef %654, i32 noundef %659, i32 noundef %664, i32 noundef %669, i32 noundef %674, i32 noundef %679, i32 noundef %684, i32 noundef %689)
  br label %691

691:                                              ; preds = %653
  %692 = load i32, ptr %19, align 4, !tbaa !5
  %693 = add nsw i32 %692, 1
  store i32 %693, ptr %19, align 4, !tbaa !5
  br label %648, !llvm.loop !27

694:                                              ; preds = %652
  br label %20, !llvm.loop !28

695:                                              ; preds = %20
  ret i32 0

696:                                              ; preds = %639, %372
  unreachable
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZSt5__gcdIiET_S0_S0_(i32 noundef, i32 noundef) #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIP4NodeEvT_S2_(ptr noundef, ptr noundef) #6

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIP4NodePFbRKS0_S3_EEvT_S6_T0_(ptr noundef, ptr noundef, ptr noundef) #6

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

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

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

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


; 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.Node = type { i32, i32, i32, i32, i32, i32, i32 }

@n = external dso_local global i32, align 4
@px = external dso_local global i32, align 4
@py = external dso_local global i32, align 4
@pz = external dso_local global i32, align 4
@a = external dso_local global [101 x %struct.Node], align 16
@.str = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [27 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z3cmpRK4NodeS1_(ptr noundef nonnull align 4 dereferenceable(28), ptr noundef nonnull align 4 dereferenceable(28)) #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z5exgcdiiRiS_(i32 noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z3CRTRiS_ii(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() local_unnamed_addr #2 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = tail call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str, ptr noundef nonnull @n, ptr noundef nonnull @px, ptr noundef nonnull @py, ptr noundef nonnull @pz)
  %6 = icmp eq i32 %5, 4
  br i1 %6, label %.preheader178, label %._crit_edge220

.loopexit176:                                     ; preds = %.lr.ph219, %._crit_edge.thread
  %7 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str, ptr noundef nonnull @n, ptr noundef nonnull @px, ptr noundef nonnull @py, ptr noundef nonnull @pz)
  %8 = icmp eq i32 %7, 4
  br i1 %8, label %.preheader178, label %._crit_edge220, !llvm.loop !5

.preheader178:                                    ; preds = %0, %.loopexit176
  %9 = load i32, ptr @n, align 4, !tbaa !7
  %10 = icmp sgt i32 %9, 0
  br i1 %10, label %.lr.ph, label %.preheader177

.preheader177:                                    ; preds = %.lr.ph, %.preheader178
  %11 = phi i32 [ %9, %.preheader178 ], [ %21, %.lr.ph ]
  %12 = icmp sgt i32 %11, 0
  br i1 %12, label %.lr.ph185, label %._crit_edge.thread

.lr.ph:                                           ; preds = %.preheader178, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %.preheader178 ]
  %13 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %indvars.iv
  %14 = getelementptr inbounds i8, ptr %13, i64 4
  %15 = getelementptr inbounds i8, ptr %13, i64 8
  %16 = getelementptr inbounds i8, ptr %13, i64 12
  %17 = getelementptr inbounds i8, ptr %13, i64 16
  %18 = getelementptr inbounds i8, ptr %13, i64 20
  %19 = getelementptr inbounds i8, ptr %13, i64 24
  %20 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.1, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef nonnull %19)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %21 = load i32, ptr @n, align 4, !tbaa !7
  %22 = sext i32 %21 to i64
  %23 = icmp slt i64 %indvars.iv.next, %22
  br i1 %23, label %.lr.ph, label %.preheader177, !llvm.loop !11

.loopexit.loopexit:                               ; preds = %159
  %.pre255 = sext i32 %160 to i64
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %.lr.ph185
  %.pre-phi = phi i64 [ %.pre255, %.loopexit.loopexit ], [ %36, %.lr.ph185 ]
  %24 = phi i32 [ %160, %.loopexit.loopexit ], [ %35, %.lr.ph185 ]
  %.1.lcssa = phi i32 [ %.3, %.loopexit.loopexit ], [ %.0119184, %.lr.ph185 ]
  %25 = icmp slt i64 %indvars.iv.next235, %.pre-phi
  %indvars.iv.next230 = add nuw nsw i64 %indvars.iv229, 1
  br i1 %25, label %.lr.ph185.backedge, label %._crit_edge

.lr.ph185.backedge:                               ; preds = %.loopexit, %._crit_edge215
  %.be = phi i32 [ %24, %.loopexit ], [ %.0126.lcssa, %._crit_edge215 ]
  %indvars.iv234.be = phi i64 [ %indvars.iv.next235, %.loopexit ], [ 0, %._crit_edge215 ]
  %indvars.iv229.be = phi i64 [ %indvars.iv.next230, %.loopexit ], [ 1, %._crit_edge215 ]
  %.0119184.be = phi i32 [ %.1.lcssa, %.loopexit ], [ 1061109567, %._crit_edge215 ]
  br label %.lr.ph185, !llvm.loop !12

._crit_edge:                                      ; preds = %.loopexit
  %26 = icmp eq i32 %.1.lcssa, 1061109567
  br i1 %26, label %._crit_edge.thread, label %.preheader175

.preheader175:                                    ; preds = %._crit_edge
  %27 = icmp sgt i32 %24, 0
  br i1 %27, label %.lr.ph189, label %._crit_edge190

.lr.ph189:                                        ; preds = %.preheader175
  %28 = sext i32 %.1.lcssa to i64
  %29 = load i32, ptr @px, align 4, !tbaa !7
  %30 = sext i32 %29 to i64
  %31 = load i32, ptr @py, align 4, !tbaa !7
  %32 = sext i32 %31 to i64
  %33 = load i32, ptr @pz, align 4, !tbaa !7
  %34 = sext i32 %33 to i64
  %wide.trip.count = zext nneg i32 %24 to i64
  br label %168

.lr.ph185:                                        ; preds = %.preheader177, %.lr.ph185.backedge
  %35 = phi i32 [ %.be, %.lr.ph185.backedge ], [ %11, %.preheader177 ]
  %indvars.iv234 = phi i64 [ %indvars.iv234.be, %.lr.ph185.backedge ], [ 0, %.preheader177 ]
  %indvars.iv229 = phi i64 [ %indvars.iv229.be, %.lr.ph185.backedge ], [ 1, %.preheader177 ]
  %.0119184 = phi i32 [ %.0119184.be, %.lr.ph185.backedge ], [ 1061109567, %.preheader177 ]
  %indvars.iv.next235 = add nuw nsw i64 %indvars.iv234, 1
  %36 = sext i32 %35 to i64
  %37 = icmp slt i64 %indvars.iv.next235, %36
  br i1 %37, label %.lr.ph182, label %.loopexit

.lr.ph182:                                        ; preds = %.lr.ph185
  %38 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %indvars.iv234
  %39 = getelementptr inbounds i8, ptr %38, i64 16
  %40 = getelementptr inbounds i8, ptr %38, i64 4
  %41 = getelementptr inbounds i8, ptr %38, i64 20
  %42 = getelementptr inbounds i8, ptr %38, i64 8
  %43 = getelementptr inbounds i8, ptr %38, i64 24
  %44 = getelementptr inbounds i8, ptr %38, i64 12
  br label %45

45:                                               ; preds = %.lr.ph182, %159
  %indvars.iv231 = phi i64 [ %indvars.iv229, %.lr.ph182 ], [ %indvars.iv.next232, %159 ]
  %.1181 = phi i32 [ %.0119184, %.lr.ph182 ], [ %.3, %159 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %1) #8
  store i32 0, ptr %1, align 4, !tbaa !7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #8
  store i32 1, ptr %2, align 4, !tbaa !7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #8
  %46 = load i32, ptr %39, align 4, !tbaa !13
  %47 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %indvars.iv231
  %48 = getelementptr inbounds i8, ptr %47, i64 16
  %49 = load i32, ptr %48, align 4, !tbaa !13
  %50 = sub nsw i32 %46, %49
  %51 = load i32, ptr @px, align 4, !tbaa !7
  %52 = srem i32 %50, %51
  %53 = icmp slt i32 %52, 0
  %54 = select i1 %53, i32 %51, i32 0
  %spec.select = add nsw i32 %54, %52
  %.not = icmp eq i32 %spec.select, 0
  %55 = getelementptr inbounds i8, ptr %47, i64 4
  %56 = load i32, ptr %55, align 4, !tbaa !15
  %57 = load i32, ptr %40, align 4, !tbaa !15
  %58 = sub nsw i32 %56, %57
  br i1 %.not, label %81, label %59

59:                                               ; preds = %45
  %60 = call i32 @llvm.abs.i32(i32 %58, i1 true)
  %61 = call noundef i32 @_ZSt5__gcdIiET_S0_S0_(i32 noundef %60, i32 noundef %51)
  %62 = load i32, ptr @px, align 4, !tbaa !7
  %63 = call noundef i32 @_Z5exgcdiiRiS_(i32 noundef %spec.select, i32 noundef %62, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %4)
  %64 = srem i32 %61, %63
  %.not151 = icmp eq i32 %64, 0
  br i1 %.not151, label %65, label %159

65:                                               ; preds = %59
  %66 = load i32, ptr %3, align 4, !tbaa !7
  %67 = sext i32 %66 to i64
  %68 = load i32, ptr %55, align 4, !tbaa !15
  %69 = load i32, ptr %40, align 4, !tbaa !15
  %70 = sub nsw i32 %68, %69
  %71 = sext i32 %70 to i64
  %72 = mul nsw i64 %71, %67
  %73 = load i32, ptr @px, align 4, !tbaa !7
  %74 = sext i32 %73 to i64
  %75 = srem i64 %72, %74
  %.lhs.trunc169 = trunc nsw i64 %75 to i32
  %76 = sdiv i32 %.lhs.trunc169, %63
  %77 = icmp slt i32 %76, 0
  %78 = select i1 %77, i32 %73, i32 0
  %spec.select158 = add nsw i32 %78, %76
  %79 = sdiv i32 %73, %63
  %80 = call noundef zeroext i1 @_Z3CRTRiS_ii(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %2, i32 noundef %spec.select158, i32 noundef %79)
  br i1 %80, label %83, label %159

81:                                               ; preds = %45
  %82 = srem i32 %58, %51
  %.not150 = icmp eq i32 %82, 0
  br i1 %.not150, label %83, label %159

83:                                               ; preds = %81, %65
  %84 = load i32, ptr %41, align 4, !tbaa !16
  %85 = getelementptr inbounds i8, ptr %47, i64 20
  %86 = load i32, ptr %85, align 4, !tbaa !16
  %87 = sub nsw i32 %84, %86
  %88 = load i32, ptr @py, align 4, !tbaa !7
  %89 = srem i32 %87, %88
  %90 = icmp slt i32 %89, 0
  %91 = select i1 %90, i32 %88, i32 0
  %spec.select159 = add nsw i32 %91, %89
  %.not152 = icmp eq i32 %spec.select159, 0
  %92 = getelementptr inbounds i8, ptr %47, i64 8
  %93 = load i32, ptr %92, align 4, !tbaa !17
  %94 = load i32, ptr %42, align 4, !tbaa !17
  %95 = sub nsw i32 %93, %94
  br i1 %.not152, label %118, label %96

96:                                               ; preds = %83
  %97 = call i32 @llvm.abs.i32(i32 %95, i1 true)
  %98 = call noundef i32 @_ZSt5__gcdIiET_S0_S0_(i32 noundef %97, i32 noundef %88)
  %99 = load i32, ptr @py, align 4, !tbaa !7
  %100 = call noundef i32 @_Z5exgcdiiRiS_(i32 noundef %spec.select159, i32 noundef %99, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %4)
  %101 = srem i32 %98, %100
  %.not154 = icmp eq i32 %101, 0
  br i1 %.not154, label %102, label %159

102:                                              ; preds = %96
  %103 = load i32, ptr %3, align 4, !tbaa !7
  %104 = sext i32 %103 to i64
  %105 = load i32, ptr %92, align 4, !tbaa !17
  %106 = load i32, ptr %42, align 4, !tbaa !17
  %107 = sub nsw i32 %105, %106
  %108 = sext i32 %107 to i64
  %109 = mul nsw i64 %108, %104
  %110 = load i32, ptr @py, align 4, !tbaa !7
  %111 = sext i32 %110 to i64
  %112 = srem i64 %109, %111
  %.lhs.trunc166 = trunc nsw i64 %112 to i32
  %113 = sdiv i32 %.lhs.trunc166, %100
  %114 = icmp slt i32 %113, 0
  %115 = select i1 %114, i32 %110, i32 0
  %spec.select160 = add nsw i32 %115, %113
  %116 = sdiv i32 %110, %100
  %117 = call noundef zeroext i1 @_Z3CRTRiS_ii(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %2, i32 noundef %spec.select160, i32 noundef %116)
  br i1 %117, label %120, label %159

118:                                              ; preds = %83
  %119 = srem i32 %95, %88
  %.not153 = icmp eq i32 %119, 0
  br i1 %.not153, label %120, label %159

120:                                              ; preds = %118, %102
  %121 = load i32, ptr %43, align 4, !tbaa !18
  %122 = getelementptr inbounds i8, ptr %47, i64 24
  %123 = load i32, ptr %122, align 4, !tbaa !18
  %124 = sub nsw i32 %121, %123
  %125 = load i32, ptr @pz, align 4, !tbaa !7
  %126 = srem i32 %124, %125
  %127 = icmp slt i32 %126, 0
  %128 = select i1 %127, i32 %125, i32 0
  %spec.select161 = add nsw i32 %128, %126
  %.not155 = icmp eq i32 %spec.select161, 0
  %129 = getelementptr inbounds i8, ptr %47, i64 12
  %130 = load i32, ptr %129, align 4, !tbaa !19
  %131 = load i32, ptr %44, align 4, !tbaa !19
  %132 = sub nsw i32 %130, %131
  br i1 %.not155, label %155, label %133

133:                                              ; preds = %120
  %134 = call i32 @llvm.abs.i32(i32 %132, i1 true)
  %135 = call noundef i32 @_ZSt5__gcdIiET_S0_S0_(i32 noundef %134, i32 noundef %125)
  %136 = load i32, ptr @pz, align 4, !tbaa !7
  %137 = call noundef i32 @_Z5exgcdiiRiS_(i32 noundef %spec.select161, i32 noundef %136, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %4)
  %138 = srem i32 %135, %137
  %.not157 = icmp eq i32 %138, 0
  br i1 %.not157, label %139, label %159

139:                                              ; preds = %133
  %140 = load i32, ptr %3, align 4, !tbaa !7
  %141 = sext i32 %140 to i64
  %142 = load i32, ptr %129, align 4, !tbaa !19
  %143 = load i32, ptr %44, align 4, !tbaa !19
  %144 = sub nsw i32 %142, %143
  %145 = sext i32 %144 to i64
  %146 = mul nsw i64 %145, %141
  %147 = load i32, ptr @pz, align 4, !tbaa !7
  %148 = sext i32 %147 to i64
  %149 = srem i64 %146, %148
  %.lhs.trunc = trunc nsw i64 %149 to i32
  %150 = sdiv i32 %.lhs.trunc, %137
  %151 = icmp slt i32 %150, 0
  %152 = select i1 %151, i32 %147, i32 0
  %spec.select162 = add nsw i32 %152, %150
  %153 = sdiv i32 %147, %137
  %154 = call noundef zeroext i1 @_Z3CRTRiS_ii(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %2, i32 noundef %spec.select162, i32 noundef %153)
  br i1 %154, label %157, label %159

155:                                              ; preds = %120
  %156 = srem i32 %132, %125
  %.not156 = icmp eq i32 %156, 0
  br i1 %.not156, label %157, label %159

157:                                              ; preds = %155, %139
  %158 = load i32, ptr %1, align 4, !tbaa !7
  %spec.select163 = call i32 @llvm.smin.i32(i32 %.1181, i32 %158)
  br label %159

159:                                              ; preds = %155, %139, %133, %118, %102, %96, %81, %65, %59, %157
  %.3 = phi i32 [ %spec.select163, %157 ], [ %.1181, %59 ], [ %.1181, %65 ], [ %.1181, %81 ], [ %.1181, %96 ], [ %.1181, %102 ], [ %.1181, %118 ], [ %.1181, %133 ], [ %.1181, %139 ], [ %.1181, %155 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) #8
  %indvars.iv.next232 = add nuw nsw i64 %indvars.iv231, 1
  %160 = load i32, ptr @n, align 4, !tbaa !7
  %161 = trunc nuw i64 %indvars.iv.next232 to i32
  %162 = icmp sgt i32 %160, %161
  br i1 %162, label %45, label %.loopexit.loopexit, !llvm.loop !20

._crit_edge190:                                   ; preds = %168, %.preheader175
  %163 = sext i32 %24 to i64
  %164 = getelementptr inbounds %struct.Node, ptr @a, i64 %163
  call void @_ZSt4sortIP4NodeEvT_S2_(ptr noundef nonnull @a, ptr noundef nonnull %164)
  %165 = load i32, ptr @n, align 4, !tbaa !7
  %166 = icmp sgt i32 %165, 0
  br i1 %166, label %.preheader.preheader, label %._crit_edge215

.preheader.preheader:                             ; preds = %._crit_edge190
  %167 = zext nneg i32 %165 to i64
  br label %.preheader

168:                                              ; preds = %.lr.ph189, %168
  %indvars.iv237 = phi i64 [ 0, %.lr.ph189 ], [ %indvars.iv.next238, %168 ]
  %169 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %indvars.iv237
  %170 = getelementptr inbounds i8, ptr %169, i64 4
  %171 = load i32, ptr %170, align 4, !tbaa !15
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds i8, ptr %169, i64 16
  %174 = load i32, ptr %173, align 4, !tbaa !13
  %175 = sext i32 %174 to i64
  %176 = mul nsw i64 %175, %28
  %177 = add nsw i64 %176, %172
  %178 = srem i64 %177, %30
  %179 = trunc nsw i64 %178 to i32
  %180 = icmp slt i64 %178, 0
  %181 = select i1 %180, i32 %29, i32 0
  %spec.select174 = add nsw i32 %181, %179
  store i32 %spec.select174, ptr %170, align 4, !tbaa !15
  %182 = getelementptr inbounds i8, ptr %169, i64 8
  %183 = load i32, ptr %182, align 4, !tbaa !17
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds i8, ptr %169, i64 20
  %186 = load i32, ptr %185, align 4, !tbaa !16
  %187 = sext i32 %186 to i64
  %188 = mul nsw i64 %187, %28
  %189 = add nsw i64 %188, %184
  %190 = srem i64 %189, %32
  %191 = trunc nsw i64 %190 to i32
  %192 = icmp slt i64 %190, 0
  %193 = select i1 %192, i32 %31, i32 0
  %storemerge172 = add nsw i32 %193, %191
  store i32 %storemerge172, ptr %182, align 4, !tbaa !17
  %194 = getelementptr inbounds i8, ptr %169, i64 12
  %195 = load i32, ptr %194, align 4, !tbaa !19
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds i8, ptr %169, i64 24
  %198 = load i32, ptr %197, align 4, !tbaa !18
  %199 = sext i32 %198 to i64
  %200 = mul nsw i64 %199, %28
  %201 = add nsw i64 %200, %196
  %202 = srem i64 %201, %34
  %203 = trunc nsw i64 %202 to i32
  %204 = icmp slt i64 %202, 0
  %205 = select i1 %204, i32 %33, i32 0
  %storemerge173 = add nsw i32 %205, %203
  store i32 %storemerge173, ptr %194, align 4, !tbaa !19
  %indvars.iv.next238 = add nuw nsw i64 %indvars.iv237, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next238, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge190, label %168, !llvm.loop !21

.preheader:                                       ; preds = %.preheader.preheader, %._crit_edge206
  %indvars.iv249 = phi i64 [ 0, %.preheader.preheader ], [ %indvars.iv.next250, %._crit_edge206 ]
  %.0122214 = phi i32 [ 0, %.preheader.preheader ], [ %.1123.lcssa, %._crit_edge206 ]
  %.0124213 = phi i32 [ 0, %.preheader.preheader ], [ %.1125.lcssa, %._crit_edge206 ]
  %206 = sext i32 %.0124213 to i64
  %207 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %206
  %208 = getelementptr inbounds i8, ptr %207, i64 8
  %209 = getelementptr inbounds i8, ptr %207, i64 12
  %210 = icmp slt i32 %.0122214, %165
  %211 = getelementptr inbounds i8, ptr %207, i64 4
  %212 = load i32, ptr %211, align 4, !tbaa !15
  br i1 %210, label %.lr.ph192, label %.critedge

.lr.ph192:                                        ; preds = %.preheader
  %213 = sext i32 %.0122214 to i64
  br label %214

214:                                              ; preds = %.lr.ph192, %229
  %indvars.iv240 = phi i64 [ %213, %.lr.ph192 ], [ %indvars.iv.next241, %229 ]
  %215 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %indvars.iv240
  %216 = getelementptr inbounds i8, ptr %215, i64 4
  %217 = load i32, ptr %216, align 4, !tbaa !15
  %218 = icmp eq i32 %212, %217
  br i1 %218, label %219, label %.critedge.loopexit.split.loop.exit263

219:                                              ; preds = %214
  %220 = load i32, ptr %208, align 4, !tbaa !17
  %221 = getelementptr inbounds i8, ptr %215, i64 8
  %222 = load i32, ptr %221, align 4, !tbaa !17
  %223 = icmp eq i32 %220, %222
  br i1 %223, label %224, label %.critedge.loopexit.split.loop.exit

224:                                              ; preds = %219
  %225 = load i32, ptr %209, align 4, !tbaa !19
  %226 = getelementptr inbounds i8, ptr %215, i64 12
  %227 = load i32, ptr %226, align 4, !tbaa !19
  %228 = icmp eq i32 %225, %227
  br i1 %228, label %229, label %.critedge.loopexit.split.loop.exit267

229:                                              ; preds = %224
  %indvars.iv.next241 = add nsw i64 %indvars.iv240, 1
  %exitcond243.not = icmp eq i64 %indvars.iv.next241, %167
  br i1 %exitcond243.not, label %.critedge, label %214, !llvm.loop !22

.critedge.loopexit.split.loop.exit:               ; preds = %219
  %230 = trunc nsw i64 %indvars.iv240 to i32
  br label %.critedge

.critedge.loopexit.split.loop.exit263:            ; preds = %214
  %231 = trunc nsw i64 %indvars.iv240 to i32
  br label %.critedge

.critedge.loopexit.split.loop.exit267:            ; preds = %224
  %232 = trunc nsw i64 %indvars.iv240 to i32
  br label %.critedge

.critedge:                                        ; preds = %229, %.critedge.loopexit.split.loop.exit, %.critedge.loopexit.split.loop.exit263, %.critedge.loopexit.split.loop.exit267, %.preheader
  %.1123.lcssa = phi i32 [ %.0122214, %.preheader ], [ %230, %.critedge.loopexit.split.loop.exit ], [ %231, %.critedge.loopexit.split.loop.exit263 ], [ %232, %.critedge.loopexit.split.loop.exit267 ], [ %165, %229 ]
  %233 = sub nsw i32 %.1123.lcssa, %.0124213
  %234 = load <2 x i32>, ptr %208, align 4, !tbaa !7
  %235 = icmp slt i32 %.0124213, %.1123.lcssa
  br i1 %235, label %.lr.ph205.preheader, label %._crit_edge206

.lr.ph205.preheader:                              ; preds = %.critedge
  %wide.trip.count247 = sext i32 %.1123.lcssa to i64
  %236 = sub nsw i64 %wide.trip.count247, %206
  %xtraiter = and i64 %236, 1
  %237 = add nsw i64 %wide.trip.count247, -1
  %238 = icmp eq i64 %237, %206
  br i1 %238, label %._crit_edge206.loopexit.unr-lcssa, label %.lr.ph205.preheader.new

.lr.ph205.preheader.new:                          ; preds = %.lr.ph205.preheader
  %unroll_iter = and i64 %236, -2
  br label %.lr.ph205

.lr.ph205:                                        ; preds = %.lr.ph205, %.lr.ph205.preheader.new
  %indvars.iv244 = phi i64 [ %206, %.lr.ph205.preheader.new ], [ %indvars.iv.next245.1, %.lr.ph205 ]
  %.sroa.0.0204 = phi i32 [ 0, %.lr.ph205.preheader.new ], [ %253, %.lr.ph205 ]
  %.sroa.9.0203 = phi i32 [ 0, %.lr.ph205.preheader.new ], [ %256, %.lr.ph205 ]
  %.sroa.14.0202 = phi i32 [ 0, %.lr.ph205.preheader.new ], [ %259, %.lr.ph205 ]
  %.sroa.19.0201 = phi i32 [ 0, %.lr.ph205.preheader.new ], [ %262, %.lr.ph205 ]
  %niter = phi i64 [ 0, %.lr.ph205.preheader.new ], [ %niter.next.1, %.lr.ph205 ]
  %239 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %indvars.iv244
  %240 = load i32, ptr %239, align 4, !tbaa !23
  %241 = add nsw i32 %240, %.sroa.0.0204
  %242 = getelementptr inbounds i8, ptr %239, i64 16
  %243 = load i32, ptr %242, align 4, !tbaa !13
  %244 = add nsw i32 %243, %.sroa.9.0203
  %245 = getelementptr inbounds i8, ptr %239, i64 20
  %246 = load i32, ptr %245, align 4, !tbaa !16
  %247 = add nsw i32 %246, %.sroa.14.0202
  %248 = getelementptr inbounds i8, ptr %239, i64 24
  %249 = load i32, ptr %248, align 4, !tbaa !18
  %250 = add nsw i32 %249, %.sroa.19.0201
  %indvars.iv.next245 = add nsw i64 %indvars.iv244, 1
  %251 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %indvars.iv.next245
  %252 = load i32, ptr %251, align 4, !tbaa !23
  %253 = add nsw i32 %252, %241
  %254 = getelementptr inbounds i8, ptr %251, i64 16
  %255 = load i32, ptr %254, align 4, !tbaa !13
  %256 = add nsw i32 %255, %244
  %257 = getelementptr inbounds i8, ptr %251, i64 20
  %258 = load i32, ptr %257, align 4, !tbaa !16
  %259 = add nsw i32 %258, %247
  %260 = getelementptr inbounds i8, ptr %251, i64 24
  %261 = load i32, ptr %260, align 4, !tbaa !18
  %262 = add nsw i32 %261, %250
  %indvars.iv.next245.1 = add nsw i64 %indvars.iv244, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge206.loopexit.unr-lcssa, label %.lr.ph205, !llvm.loop !24

._crit_edge206.loopexit.unr-lcssa:                ; preds = %.lr.ph205, %.lr.ph205.preheader
  %.lcssa288.ph = phi i32 [ poison, %.lr.ph205.preheader ], [ %253, %.lr.ph205 ]
  %.lcssa287.ph = phi i32 [ poison, %.lr.ph205.preheader ], [ %256, %.lr.ph205 ]
  %.lcssa286.ph = phi i32 [ poison, %.lr.ph205.preheader ], [ %259, %.lr.ph205 ]
  %.lcssa285.ph = phi i32 [ poison, %.lr.ph205.preheader ], [ %262, %.lr.ph205 ]
  %indvars.iv244.unr = phi i64 [ %206, %.lr.ph205.preheader ], [ %indvars.iv.next245.1, %.lr.ph205 ]
  %.sroa.0.0204.unr = phi i32 [ 0, %.lr.ph205.preheader ], [ %253, %.lr.ph205 ]
  %.sroa.9.0203.unr = phi i32 [ 0, %.lr.ph205.preheader ], [ %256, %.lr.ph205 ]
  %.sroa.14.0202.unr = phi i32 [ 0, %.lr.ph205.preheader ], [ %259, %.lr.ph205 ]
  %.sroa.19.0201.unr = phi i32 [ 0, %.lr.ph205.preheader ], [ %262, %.lr.ph205 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge206, label %.lr.ph205.epil

.lr.ph205.epil:                                   ; preds = %._crit_edge206.loopexit.unr-lcssa
  %263 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %indvars.iv244.unr
  %264 = load i32, ptr %263, align 4, !tbaa !23
  %265 = add nsw i32 %264, %.sroa.0.0204.unr
  %266 = getelementptr inbounds i8, ptr %263, i64 16
  %267 = load i32, ptr %266, align 4, !tbaa !13
  %268 = add nsw i32 %267, %.sroa.9.0203.unr
  %269 = getelementptr inbounds i8, ptr %263, i64 20
  %270 = load i32, ptr %269, align 4, !tbaa !16
  %271 = add nsw i32 %270, %.sroa.14.0202.unr
  %272 = getelementptr inbounds i8, ptr %263, i64 24
  %273 = load i32, ptr %272, align 4, !tbaa !18
  %274 = add nsw i32 %273, %.sroa.19.0201.unr
  br label %._crit_edge206

._crit_edge206:                                   ; preds = %.lr.ph205.epil, %._crit_edge206.loopexit.unr-lcssa, %.critedge
  %.1125.lcssa = phi i32 [ %.0124213, %.critedge ], [ %.1123.lcssa, %._crit_edge206.loopexit.unr-lcssa ], [ %.1123.lcssa, %.lr.ph205.epil ]
  %.sroa.19.0.lcssa = phi i32 [ 0, %.critedge ], [ %.lcssa285.ph, %._crit_edge206.loopexit.unr-lcssa ], [ %274, %.lr.ph205.epil ]
  %.sroa.14.0.lcssa = phi i32 [ 0, %.critedge ], [ %.lcssa286.ph, %._crit_edge206.loopexit.unr-lcssa ], [ %271, %.lr.ph205.epil ]
  %.sroa.9.0.lcssa = phi i32 [ 0, %.critedge ], [ %.lcssa287.ph, %._crit_edge206.loopexit.unr-lcssa ], [ %268, %.lr.ph205.epil ]
  %.sroa.0.0.lcssa = phi i32 [ 0, %.critedge ], [ %.lcssa288.ph, %._crit_edge206.loopexit.unr-lcssa ], [ %265, %.lr.ph205.epil ]
  %275 = sdiv i32 %.sroa.9.0.lcssa, %233
  %276 = sdiv i32 %.sroa.14.0.lcssa, %233
  %277 = sdiv i32 %.sroa.19.0.lcssa, %233
  %indvars.iv.next250 = add nuw nsw i64 %indvars.iv249, 1
  %278 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %indvars.iv249
  store i32 %.sroa.0.0.lcssa, ptr %278, align 4, !tbaa !7
  %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %278, i64 4
  store i32 %212, ptr %.sroa.6.0..sroa_idx, align 4, !tbaa !7
  %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %278, i64 8
  store <2 x i32> %234, ptr %.sroa.7.0..sroa_idx, align 4, !tbaa !7
  %.sroa.9.0..sroa_idx = getelementptr inbounds i8, ptr %278, i64 16
  store i32 %275, ptr %.sroa.9.0..sroa_idx, align 4, !tbaa !7
  %.sroa.14.0..sroa_idx = getelementptr inbounds i8, ptr %278, i64 20
  store i32 %276, ptr %.sroa.14.0..sroa_idx, align 4, !tbaa !7
  %.sroa.19.0..sroa_idx = getelementptr inbounds i8, ptr %278, i64 24
  store i32 %277, ptr %.sroa.19.0..sroa_idx, align 4, !tbaa !7
  %279 = icmp slt i32 %.1125.lcssa, %165
  br i1 %279, label %.preheader, label %._crit_edge215.loopexit, !llvm.loop !25

._crit_edge215.loopexit:                          ; preds = %._crit_edge206
  %280 = trunc nuw i64 %indvars.iv.next250 to i32
  br label %._crit_edge215

._crit_edge215:                                   ; preds = %._crit_edge215.loopexit, %._crit_edge190
  %.0126.lcssa = phi i32 [ 0, %._crit_edge190 ], [ %280, %._crit_edge215.loopexit ]
  store i32 %.0126.lcssa, ptr @n, align 4, !tbaa !7
  %281 = icmp sgt i32 %.0126.lcssa, 0
  br i1 %281, label %.lr.ph185.backedge, label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %._crit_edge, %._crit_edge215, %.preheader177
  %282 = phi i32 [ %11, %.preheader177 ], [ %24, %._crit_edge ], [ %.0126.lcssa, %._crit_edge215 ]
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds %struct.Node, ptr @a, i64 %283
  call void @_ZSt4sortIP4NodePFbRKS0_S3_EEvT_S6_T0_(ptr noundef nonnull @a, ptr noundef nonnull %284, ptr noundef nonnull @_Z3cmpRK4NodeS1_)
  %285 = load i32, ptr @n, align 4, !tbaa !7
  %286 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %285)
  %287 = load i32, ptr @n, align 4, !tbaa !7
  %288 = icmp sgt i32 %287, 0
  br i1 %288, label %.lr.ph219, label %.loopexit176

.lr.ph219:                                        ; preds = %._crit_edge.thread, %.lr.ph219
  %indvars.iv252 = phi i64 [ %indvars.iv.next253, %.lr.ph219 ], [ 0, %._crit_edge.thread ]
  %289 = getelementptr inbounds [101 x %struct.Node], ptr @a, i64 0, i64 %indvars.iv252
  %290 = load i32, ptr %289, align 4, !tbaa !23
  %291 = getelementptr inbounds i8, ptr %289, i64 4
  %292 = load i32, ptr %291, align 4, !tbaa !15
  %293 = getelementptr inbounds i8, ptr %289, i64 8
  %294 = load i32, ptr %293, align 4, !tbaa !17
  %295 = getelementptr inbounds i8, ptr %289, i64 12
  %296 = load i32, ptr %295, align 4, !tbaa !19
  %297 = getelementptr inbounds i8, ptr %289, i64 16
  %298 = load i32, ptr %297, align 4, !tbaa !13
  %299 = getelementptr inbounds i8, ptr %289, i64 20
  %300 = load i32, ptr %299, align 4, !tbaa !16
  %301 = getelementptr inbounds i8, ptr %289, i64 24
  %302 = load i32, ptr %301, align 4, !tbaa !18
  %303 = trunc nuw nsw i64 %indvars.iv252 to i32
  %304 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %303, i32 noundef %290, i32 noundef %292, i32 noundef %294, i32 noundef %296, i32 noundef %298, i32 noundef %300, i32 noundef %302)
  %indvars.iv.next253 = add nuw nsw i64 %indvars.iv252, 1
  %305 = load i32, ptr @n, align 4, !tbaa !7
  %306 = sext i32 %305 to i64
  %307 = icmp slt i64 %indvars.iv.next253, %306
  br i1 %307, label %.lr.ph219, label %.loopexit176, !llvm.loop !26

._crit_edge220:                                   ; preds = %.loopexit176, %0
  ret i32 0
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZSt5__gcdIiET_S0_S0_(i32 noundef, i32 noundef) local_unnamed_addr #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIP4NodeEvT_S2_(ptr noundef, ptr noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIP4NodePFbRKS0_S3_EEvT_S6_T0_(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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #7

attributes #0 = { mustprogress 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 = { mustprogress norecurse 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 #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 = { mustprogress 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 #5 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { inlinehint mustprogress 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { 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 = distinct !{!5, !6}
!6 = !{!"llvm.loop.mustprogress"}
!7 = !{!8, !8, i64 0}
!8 = !{!"int", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = distinct !{!11, !6}
!12 = distinct !{!12, !6}
!13 = !{!14, !8, i64 16}
!14 = !{!"_ZTS4Node", !8, i64 0, !8, i64 4, !8, i64 8, !8, i64 12, !8, i64 16, !8, i64 20, !8, i64 24}
!15 = !{!14, !8, i64 4}
!16 = !{!14, !8, i64 20}
!17 = !{!14, !8, i64 8}
!18 = !{!14, !8, i64 24}
!19 = !{!14, !8, i64 12}
!20 = distinct !{!20, !6}
!21 = distinct !{!21, !6}
!22 = distinct !{!22, !6}
!23 = !{!14, !8, i64 0}
!24 = distinct !{!24, !6}
!25 = distinct !{!25, !6}
!26 = distinct !{!26, !6}


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