; LLVM IR from VastoLorde95/Competitive-Programming :: Hackerrank/101 Hacks/101 Hack 2016/101 Hack Jan/Problem D (D)

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

%"class.std::stack" = type { %"class.std::deque" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl" }
%"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl" = type { %"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl_data" }
%"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }

@n = external dso_local global i32, align 4
@q = external dso_local global i32, align 4
@a = external dso_local global [500100 x i32], align 16
@up = external dso_local global [500100 x i32], align 16
@down = external dso_local global [500100 x i32], align 16
@jump = external dso_local global [500100 x [20 x i32]], align 16
@tree2 = external dso_local global [500100 x i32], align 16
@.str = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z3dfsii(i32 noundef, i32 noundef) #0

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() #1 personality ptr @__gxx_personality_v0 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca %"class.std::stack", align 8
  %4 = alloca ptr, align 8
  %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
  store i32 0, ptr %1, align 4
  %17 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str, ptr noundef @n)
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #6
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %18

18:                                               ; preds = %28, %0
  %19 = load i32, ptr %2, align 4, !tbaa !5
  %20 = load i32, ptr @n, align 4, !tbaa !5
  %21 = icmp sle i32 %19, %20
  br i1 %21, label %23, label %22

22:                                               ; preds = %18
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #6
  br label %31

23:                                               ; preds = %18
  %24 = load i32, ptr %2, align 4, !tbaa !5
  %25 = sext i32 %24 to i64
  %26 = getelementptr inbounds [500100 x i32], ptr @a, i64 0, i64 %25
  %27 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str, ptr noundef %26)
  br label %28

28:                                               ; preds = %23
  %29 = load i32, ptr %2, align 4, !tbaa !5
  %30 = add nsw i32 %29, 1
  store i32 %30, ptr %2, align 4, !tbaa !5
  br label %18, !llvm.loop !9

31:                                               ; preds = %22
  %32 = load i32, ptr @n, align 4, !tbaa !5
  %33 = add nsw i32 %32, 1
  %34 = load i32, ptr @n, align 4, !tbaa !5
  %35 = add nsw i32 %34, 1
  %36 = sext i32 %35 to i64
  %37 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %36
  store i32 %33, ptr %37, align 4, !tbaa !5
  %38 = load i32, ptr @n, align 4, !tbaa !5
  %39 = add nsw i32 %38, 1
  %40 = sext i32 %39 to i64
  %41 = getelementptr inbounds [500100 x i32], ptr @up, i64 0, i64 %40
  store i32 %33, ptr %41, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 80, ptr %3) #6
  call void @_ZNSt5stackIiSt5dequeIiSaIiEEEC2IS2_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %3)
  %42 = load i32, ptr @n, align 4, !tbaa !5
  %43 = add nsw i32 %42, 1
  %44 = load i32, ptr @n, align 4, !tbaa !5
  %45 = sext i32 %44 to i64
  %46 = getelementptr inbounds [500100 x i32], ptr @up, i64 0, i64 %45
  store i32 %43, ptr %46, align 4, !tbaa !5
  invoke void @_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi(ptr noundef nonnull align 8 dereferenceable(80) %3, ptr noundef nonnull align 4 dereferenceable(4) @n)
          to label %47 unwind label %54

47:                                               ; preds = %31
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  %48 = load i32, ptr @n, align 4, !tbaa !5
  %49 = sub nsw i32 %48, 1
  store i32 %49, ptr %6, align 4, !tbaa !5
  br label %50

50:                                               ; preds = %100, %47
  %51 = load i32, ptr %6, align 4, !tbaa !5
  %52 = icmp sgt i32 %51, 0
  br i1 %52, label %58, label %53

53:                                               ; preds = %50
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  br label %103

54:                                               ; preds = %271, %110, %108, %104, %31
  %55 = landingpad { ptr, i32 }
          cleanup
  %56 = extractvalue { ptr, i32 } %55, 0
  store ptr %56, ptr %4, align 8
  %57 = extractvalue { ptr, i32 } %55, 1
  store i32 %57, ptr %5, align 4
  br label %341

58:                                               ; preds = %50
  br label %59

59:                                               ; preds = %77, %58
  %60 = invoke noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %3)
          to label %61 unwind label %78

61:                                               ; preds = %59
  br i1 %60, label %74, label %62

62:                                               ; preds = %61
  %63 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5stackIiSt5dequeIiSaIiEEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %3)
          to label %64 unwind label %78

64:                                               ; preds = %62
  %65 = load i32, ptr %63, align 4, !tbaa !5
  %66 = sext i32 %65 to i64
  %67 = getelementptr inbounds [500100 x i32], ptr @a, i64 0, i64 %66
  %68 = load i32, ptr %67, align 4, !tbaa !5
  %69 = load i32, ptr %6, align 4, !tbaa !5
  %70 = sext i32 %69 to i64
  %71 = getelementptr inbounds [500100 x i32], ptr @a, i64 0, i64 %70
  %72 = load i32, ptr %71, align 4, !tbaa !5
  %73 = icmp sle i32 %68, %72
  br label %74

74:                                               ; preds = %64, %61
  %75 = phi i1 [ false, %61 ], [ %73, %64 ]
  br i1 %75, label %76, label %82

76:                                               ; preds = %74
  invoke void @_ZNSt5stackIiSt5dequeIiSaIiEEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %3)
          to label %77 unwind label %78

77:                                               ; preds = %76
  br label %59, !llvm.loop !11

78:                                               ; preds = %98, %91, %82, %76, %62, %59
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %4, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  br label %341

82:                                               ; preds = %74
  %83 = invoke noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %3)
          to label %84 unwind label %78

84:                                               ; preds = %82
  br i1 %83, label %85, label %91

85:                                               ; preds = %84
  %86 = load i32, ptr @n, align 4, !tbaa !5
  %87 = add nsw i32 %86, 1
  %88 = load i32, ptr %6, align 4, !tbaa !5
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds [500100 x i32], ptr @up, i64 0, i64 %89
  store i32 %87, ptr %90, align 4, !tbaa !5
  br label %98

91:                                               ; preds = %84
  %92 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5stackIiSt5dequeIiSaIiEEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %3)
          to label %93 unwind label %78

93:                                               ; preds = %91
  %94 = load i32, ptr %92, align 4, !tbaa !5
  %95 = load i32, ptr %6, align 4, !tbaa !5
  %96 = sext i32 %95 to i64
  %97 = getelementptr inbounds [500100 x i32], ptr @up, i64 0, i64 %96
  store i32 %94, ptr %97, align 4, !tbaa !5
  br label %98

98:                                               ; preds = %93, %85
  invoke void @_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi(ptr noundef nonnull align 8 dereferenceable(80) %3, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %99 unwind label %78

99:                                               ; preds = %98
  br label %100

100:                                              ; preds = %99
  %101 = load i32, ptr %6, align 4, !tbaa !5
  %102 = add nsw i32 %101, -1
  store i32 %102, ptr %6, align 4, !tbaa !5
  br label %50, !llvm.loop !12

103:                                              ; preds = %53
  br label %104

104:                                              ; preds = %109, %103
  %105 = invoke noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %3)
          to label %106 unwind label %54

106:                                              ; preds = %104
  %107 = xor i1 %105, true
  br i1 %107, label %108, label %110

108:                                              ; preds = %106
  invoke void @_ZNSt5stackIiSt5dequeIiSaIiEEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %3)
          to label %109 unwind label %54

109:                                              ; preds = %108
  br label %104, !llvm.loop !13

110:                                              ; preds = %106
  %111 = load i32, ptr @n, align 4, !tbaa !5
  %112 = add nsw i32 %111, 1
  %113 = load i32, ptr @n, align 4, !tbaa !5
  %114 = sext i32 %113 to i64
  %115 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %114
  store i32 %112, ptr %115, align 4, !tbaa !5
  invoke void @_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi(ptr noundef nonnull align 8 dereferenceable(80) %3, ptr noundef nonnull align 4 dereferenceable(4) @n)
          to label %116 unwind label %54

116:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  %117 = load i32, ptr @n, align 4, !tbaa !5
  %118 = sub nsw i32 %117, 1
  store i32 %118, ptr %7, align 4, !tbaa !5
  br label %119

119:                                              ; preds = %165, %116
  %120 = load i32, ptr %7, align 4, !tbaa !5
  %121 = icmp sgt i32 %120, 0
  br i1 %121, label %123, label %122

122:                                              ; preds = %119
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  br label %168

123:                                              ; preds = %119
  br label %124

124:                                              ; preds = %142, %123
  %125 = invoke noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %3)
          to label %126 unwind label %143

126:                                              ; preds = %124
  br i1 %125, label %139, label %127

127:                                              ; preds = %126
  %128 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5stackIiSt5dequeIiSaIiEEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %3)
          to label %129 unwind label %143

129:                                              ; preds = %127
  %130 = load i32, ptr %128, align 4, !tbaa !5
  %131 = sext i32 %130 to i64
  %132 = getelementptr inbounds [500100 x i32], ptr @a, i64 0, i64 %131
  %133 = load i32, ptr %132, align 4, !tbaa !5
  %134 = load i32, ptr %7, align 4, !tbaa !5
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds [500100 x i32], ptr @a, i64 0, i64 %135
  %137 = load i32, ptr %136, align 4, !tbaa !5
  %138 = icmp sge i32 %133, %137
  br label %139

139:                                              ; preds = %129, %126
  %140 = phi i1 [ false, %126 ], [ %138, %129 ]
  br i1 %140, label %141, label %147

141:                                              ; preds = %139
  invoke void @_ZNSt5stackIiSt5dequeIiSaIiEEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %3)
          to label %142 unwind label %143

142:                                              ; preds = %141
  br label %124, !llvm.loop !14

143:                                              ; preds = %163, %156, %147, %141, %127, %124
  %144 = landingpad { ptr, i32 }
          cleanup
  %145 = extractvalue { ptr, i32 } %144, 0
  store ptr %145, ptr %4, align 8
  %146 = extractvalue { ptr, i32 } %144, 1
  store i32 %146, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  br label %341

147:                                              ; preds = %139
  %148 = invoke noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %3)
          to label %149 unwind label %143

149:                                              ; preds = %147
  br i1 %148, label %150, label %156

150:                                              ; preds = %149
  %151 = load i32, ptr @n, align 4, !tbaa !5
  %152 = add nsw i32 %151, 1
  %153 = load i32, ptr %7, align 4, !tbaa !5
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %154
  store i32 %152, ptr %155, align 4, !tbaa !5
  br label %163

156:                                              ; preds = %149
  %157 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5stackIiSt5dequeIiSaIiEEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %3)
          to label %158 unwind label %143

158:                                              ; preds = %156
  %159 = load i32, ptr %157, align 4, !tbaa !5
  %160 = load i32, ptr %7, align 4, !tbaa !5
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %161
  store i32 %159, ptr %162, align 4, !tbaa !5
  br label %163

163:                                              ; preds = %158, %150
  invoke void @_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi(ptr noundef nonnull align 8 dereferenceable(80) %3, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %164 unwind label %143

164:                                              ; preds = %163
  br label %165

165:                                              ; preds = %164
  %166 = load i32, ptr %7, align 4, !tbaa !5
  %167 = add nsw i32 %166, -1
  store i32 %167, ptr %7, align 4, !tbaa !5
  br label %119, !llvm.loop !15

168:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  store i32 1, ptr %8, align 4, !tbaa !5
  br label %169

169:                                              ; preds = %189, %168
  %170 = load i32, ptr %8, align 4, !tbaa !5
  %171 = load i32, ptr @n, align 4, !tbaa !5
  %172 = icmp sle i32 %170, %171
  br i1 %172, label %174, label %173

173:                                              ; preds = %169
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  br label %192

174:                                              ; preds = %169
  %175 = load i32, ptr %8, align 4, !tbaa !5
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds [500100 x i32], ptr @tree2, i64 0, i64 %176
  %178 = load i32, ptr %177, align 4, !tbaa !5
  %179 = icmp eq i32 %178, 0
  br i1 %179, label %180, label %188

180:                                              ; preds = %174
  %181 = load i32, ptr %8, align 4, !tbaa !5
  %182 = invoke noundef i32 @_Z3dfsii(i32 noundef %181, i32 noundef 1)
          to label %183 unwind label %184

183:                                              ; preds = %180
  br label %188

184:                                              ; preds = %180
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %4, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  br label %341

188:                                              ; preds = %183, %174
  br label %189

189:                                              ; preds = %188
  %190 = load i32, ptr %8, align 4, !tbaa !5
  %191 = add nsw i32 %190, 1
  store i32 %191, ptr %8, align 4, !tbaa !5
  br label %169, !llvm.loop !16

192:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  store i32 1, ptr %9, align 4, !tbaa !5
  br label %193

193:                                              ; preds = %210, %192
  %194 = load i32, ptr %9, align 4, !tbaa !5
  %195 = load i32, ptr @n, align 4, !tbaa !5
  %196 = icmp sle i32 %194, %195
  br i1 %196, label %198, label %197

197:                                              ; preds = %193
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  br label %213

198:                                              ; preds = %193
  %199 = load i32, ptr %9, align 4, !tbaa !5
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %200
  %202 = load i32, ptr %201, align 4, !tbaa !5
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds [500100 x i32], ptr @up, i64 0, i64 %203
  %205 = load i32, ptr %204, align 4, !tbaa !5
  %206 = load i32, ptr %9, align 4, !tbaa !5
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %207
  %209 = getelementptr inbounds [20 x i32], ptr %208, i64 0, i64 0
  store i32 %205, ptr %209, align 16, !tbaa !5
  br label %210

210:                                              ; preds = %198
  %211 = load i32, ptr %9, align 4, !tbaa !5
  %212 = add nsw i32 %211, 1
  store i32 %212, ptr %9, align 4, !tbaa !5
  br label %193, !llvm.loop !17

213:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  store i32 0, ptr %10, align 4, !tbaa !5
  br label %214

214:                                              ; preds = %228, %213
  %215 = load i32, ptr %10, align 4, !tbaa !5
  %216 = icmp slt i32 %215, 20
  br i1 %216, label %218, label %217

217:                                              ; preds = %214
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  br label %231

218:                                              ; preds = %214
  %219 = load i32, ptr @n, align 4, !tbaa !5
  %220 = add nsw i32 %219, 1
  %221 = load i32, ptr @n, align 4, !tbaa !5
  %222 = add nsw i32 %221, 1
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %223
  %225 = load i32, ptr %10, align 4, !tbaa !5
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds [20 x i32], ptr %224, i64 0, i64 %226
  store i32 %220, ptr %227, align 4, !tbaa !5
  br label %228

228:                                              ; preds = %218
  %229 = load i32, ptr %10, align 4, !tbaa !5
  %230 = add nsw i32 %229, 1
  store i32 %230, ptr %10, align 4, !tbaa !5
  br label %214, !llvm.loop !18

231:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  store i32 1, ptr %11, align 4, !tbaa !5
  br label %232

232:                                              ; preds = %268, %231
  %233 = load i32, ptr %11, align 4, !tbaa !5
  %234 = icmp slt i32 %233, 20
  br i1 %234, label %236, label %235

235:                                              ; preds = %232
  store i32 26, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  br label %271

236:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  store i32 1, ptr %13, align 4, !tbaa !5
  br label %237

237:                                              ; preds = %264, %236
  %238 = load i32, ptr %13, align 4, !tbaa !5
  %239 = load i32, ptr @n, align 4, !tbaa !5
  %240 = icmp sle i32 %238, %239
  br i1 %240, label %242, label %241

241:                                              ; preds = %237
  store i32 29, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  br label %267

242:                                              ; preds = %237
  %243 = load i32, ptr %13, align 4, !tbaa !5
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %244
  %246 = load i32, ptr %11, align 4, !tbaa !5
  %247 = sub nsw i32 %246, 1
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds [20 x i32], ptr %245, i64 0, i64 %248
  %250 = load i32, ptr %249, align 4, !tbaa !5
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %251
  %253 = load i32, ptr %11, align 4, !tbaa !5
  %254 = sub nsw i32 %253, 1
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds [20 x i32], ptr %252, i64 0, i64 %255
  %257 = load i32, ptr %256, align 4, !tbaa !5
  %258 = load i32, ptr %13, align 4, !tbaa !5
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %259
  %261 = load i32, ptr %11, align 4, !tbaa !5
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds [20 x i32], ptr %260, i64 0, i64 %262
  store i32 %257, ptr %263, align 4, !tbaa !5
  br label %264

264:                                              ; preds = %242
  %265 = load i32, ptr %13, align 4, !tbaa !5
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %13, align 4, !tbaa !5
  br label %237, !llvm.loop !19

267:                                              ; preds = %241
  br label %268

268:                                              ; preds = %267
  %269 = load i32, ptr %11, align 4, !tbaa !5
  %270 = add nsw i32 %269, 1
  store i32 %270, ptr %11, align 4, !tbaa !5
  br label %232, !llvm.loop !20

271:                                              ; preds = %235
  %272 = invoke i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str, ptr noundef @q)
          to label %273 unwind label %54

273:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  br label %274

274:                                              ; preds = %338, %273
  %275 = load i32, ptr @q, align 4, !tbaa !5
  %276 = add nsw i32 %275, -1
  store i32 %276, ptr @q, align 4, !tbaa !5
  %277 = icmp ne i32 %275, 0
  br i1 %277, label %278, label %339

278:                                              ; preds = %274
  %279 = invoke i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.1, ptr noundef %14, ptr noundef %15)
          to label %280 unwind label %293

280:                                              ; preds = %278
  %281 = load i32, ptr %14, align 4, !tbaa !5
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds [500100 x i32], ptr @tree2, i64 0, i64 %282
  %284 = load i32, ptr %283, align 4, !tbaa !5
  %285 = load i32, ptr %15, align 4, !tbaa !5
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds [500100 x i32], ptr @tree2, i64 0, i64 %286
  %288 = load i32, ptr %287, align 4, !tbaa !5
  %289 = icmp eq i32 %284, %288
  br i1 %289, label %290, label %297

290:                                              ; preds = %280
  %291 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2)
          to label %292 unwind label %293

292:                                              ; preds = %290
  br label %338

293:                                              ; preds = %334, %331, %290, %278
  %294 = landingpad { ptr, i32 }
          cleanup
  %295 = extractvalue { ptr, i32 } %294, 0
  store ptr %295, ptr %4, align 8
  %296 = extractvalue { ptr, i32 } %294, 1
  store i32 %296, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  br label %341

297:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  store i32 19, ptr %16, align 4, !tbaa !5
  br label %298

298:                                              ; preds = %321, %297
  %299 = load i32, ptr %16, align 4, !tbaa !5
  %300 = icmp sge i32 %299, 0
  br i1 %300, label %302, label %301

301:                                              ; preds = %298
  store i32 34, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %324

302:                                              ; preds = %298
  %303 = load i32, ptr %14, align 4, !tbaa !5
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %304
  %306 = load i32, ptr %16, align 4, !tbaa !5
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds [20 x i32], ptr %305, i64 0, i64 %307
  %309 = load i32, ptr %308, align 4, !tbaa !5
  %310 = load i32, ptr %15, align 4, !tbaa !5
  %311 = icmp slt i32 %309, %310
  br i1 %311, label %312, label %320

312:                                              ; preds = %302
  %313 = load i32, ptr %14, align 4, !tbaa !5
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %314
  %316 = load i32, ptr %16, align 4, !tbaa !5
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds [20 x i32], ptr %315, i64 0, i64 %317
  %319 = load i32, ptr %318, align 4, !tbaa !5
  store i32 %319, ptr %14, align 4, !tbaa !5
  br label %320

320:                                              ; preds = %312, %302
  br label %321

321:                                              ; preds = %320
  %322 = load i32, ptr %16, align 4, !tbaa !5
  %323 = add nsw i32 %322, -1
  store i32 %323, ptr %16, align 4, !tbaa !5
  br label %298, !llvm.loop !21

324:                                              ; preds = %301
  %325 = load i32, ptr %14, align 4, !tbaa !5
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %326
  %328 = load i32, ptr %327, align 4, !tbaa !5
  %329 = load i32, ptr %15, align 4, !tbaa !5
  %330 = icmp eq i32 %328, %329
  br i1 %330, label %331, label %334

331:                                              ; preds = %324
  %332 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.2)
          to label %333 unwind label %293

333:                                              ; preds = %331
  br label %337

334:                                              ; preds = %324
  %335 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.3)
          to label %336 unwind label %293

336:                                              ; preds = %334
  br label %337

337:                                              ; preds = %336, %333
  br label %338

338:                                              ; preds = %337, %292
  br label %274, !llvm.loop !22

339:                                              ; preds = %274
  store i32 0, ptr %1, align 4
  store i32 1, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @_ZNSt5stackIiSt5dequeIiSaIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %3) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %3) #6
  %340 = load i32, ptr %1, align 4
  ret i32 %340

341:                                              ; preds = %293, %184, %143, %78, %54
  call void @_ZNSt5stackIiSt5dequeIiSaIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %3) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %3) #6
  br label %342

342:                                              ; preds = %341
  %343 = load ptr, ptr %4, align 8
  %344 = load i32, ptr %5, align 4
  %345 = insertvalue { ptr, i32 } poison, ptr %343, 0
  %346 = insertvalue { ptr, i32 } %345, i32 %344, 1
  resume { ptr, i32 } %346
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt5stackIiSt5dequeIiSaIiEEEC2IS2_vEEv(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 4 dereferenceable(4)) #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5stackIiSt5dequeIiSaIiEEE3topEv(ptr noundef nonnull align 8 dereferenceable(80)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt5stackIiSt5dequeIiSaIiEEE3popEv(ptr noundef nonnull align 8 dereferenceable(80)) #4 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt5stackIiSt5dequeIiSaIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #5 align 2

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 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 #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { inlinehint 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 #6 = { 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 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !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"

%"class.std::stack" = type { %"class.std::deque" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl" }
%"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl" = type { %"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl_data" }
%"struct.std::_Deque_base<int, std::allocator<int>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }

@n = external dso_local global i32, align 4
@q = external dso_local global i32, align 4
@a = external dso_local global [500100 x i32], align 16
@up = external dso_local local_unnamed_addr global [500100 x i32], align 16
@down = external dso_local local_unnamed_addr global [500100 x i32], align 16
@jump = external dso_local local_unnamed_addr global [500100 x [20 x i32]], align 16
@tree2 = external dso_local local_unnamed_addr global [500100 x i32], align 16
@.str = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z3dfsii(i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() local_unnamed_addr #1 personality ptr @__gxx_personality_v0 {
  %1 = alloca %"class.std::stack", align 8
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = tail call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str, ptr noundef nonnull @n)
  %7 = load i32, ptr @n, align 4, !tbaa !5
  %.not57 = icmp slt i32 %7, 1
  br i1 %.not57, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %0
  %.lcssa56 = phi i32 [ %7, %0 ], [ %18, %.lr.ph ]
  %8 = add nsw i32 %.lcssa56, 1
  %9 = sext i32 %8 to i64
  %10 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %9
  store i32 %8, ptr %10, align 4, !tbaa !5
  %11 = getelementptr inbounds [500100 x i32], ptr @up, i64 0, i64 %9
  store i32 %8, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %1) #6
  call void @_ZNSt5stackIiSt5dequeIiSaIiEEEC2IS2_vEEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %12 = load i32, ptr @n, align 4, !tbaa !5
  %13 = add nsw i32 %12, 1
  %14 = sext i32 %12 to i64
  %15 = getelementptr inbounds [500100 x i32], ptr @up, i64 0, i64 %14
  store i32 %13, ptr %15, align 4, !tbaa !5
  invoke void @_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull align 4 dereferenceable(4) @n)
          to label %20 unwind label %26

.lr.ph:                                           ; preds = %0, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 1, %0 ]
  %16 = getelementptr inbounds [500100 x i32], ptr @a, i64 0, i64 %indvars.iv
  %17 = tail call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str, ptr noundef nonnull %16)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %18 = load i32, ptr @n, align 4, !tbaa !5
  %19 = sext i32 %18 to i64
  %.not.not = icmp slt i64 %indvars.iv, %19
  br i1 %.not.not, label %.lr.ph, label %._crit_edge, !llvm.loop !9

20:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #6
  br label %21

21:                                               ; preds = %48, %20
  %storemerge.in.in = phi ptr [ @n, %20 ], [ %2, %48 ]
  %storemerge.in = load i32, ptr %storemerge.in.in, align 4, !tbaa !5
  %storemerge = add nsw i32 %storemerge.in, -1
  store i32 %storemerge, ptr %2, align 4, !tbaa !5
  %22 = icmp sgt i32 %storemerge.in, 1
  br i1 %22, label %.preheader54, label %24

.preheader54:                                     ; preds = %21
  %23 = call noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  br i1 %23, label %.critedge, label %.lr.ph59

24:                                               ; preds = %21
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #6
  %25 = call noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  br i1 %25, label %._crit_edge63, label %.lr.ph62

26:                                               ; preds = %._crit_edge63, %._crit_edge
  %27 = landingpad { ptr, i32 }
          cleanup
  br label %651

.lr.ph59:                                         ; preds = %.preheader54, %37
  %28 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5stackIiSt5dequeIiSaIiEEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %29 = load i32, ptr %28, align 4, !tbaa !5
  %30 = sext i32 %29 to i64
  %31 = getelementptr inbounds [500100 x i32], ptr @a, i64 0, i64 %30
  %32 = load i32, ptr %31, align 4, !tbaa !5
  %33 = load i32, ptr %2, align 4, !tbaa !5
  %34 = sext i32 %33 to i64
  %35 = getelementptr inbounds [500100 x i32], ptr @a, i64 0, i64 %34
  %36 = load i32, ptr %35, align 4, !tbaa !5
  %.not47 = icmp sgt i32 %32, %36
  br i1 %.not47, label %.critedge, label %37

37:                                               ; preds = %.lr.ph59
  call void @_ZNSt5stackIiSt5dequeIiSaIiEEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %38 = call noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  br i1 %38, label %.critedge, label %.lr.ph59, !llvm.loop !11

39:                                               ; preds = %48
  %40 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #6
  br label %651

.critedge:                                        ; preds = %.lr.ph59, %37, %.preheader54
  %41 = call noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  br i1 %41, label %42, label %45

42:                                               ; preds = %.critedge
  %43 = load i32, ptr @n, align 4, !tbaa !5
  %44 = add nsw i32 %43, 1
  br label %48

45:                                               ; preds = %.critedge
  %46 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5stackIiSt5dequeIiSaIiEEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %47 = load i32, ptr %46, align 4, !tbaa !5
  br label %48

48:                                               ; preds = %45, %42
  %.sink = phi i32 [ %47, %45 ], [ %44, %42 ]
  %.sink141 = load i32, ptr %2, align 4, !tbaa !5
  %49 = sext i32 %.sink141 to i64
  %50 = getelementptr inbounds [500100 x i32], ptr @up, i64 0, i64 %49
  store i32 %.sink, ptr %50, align 4, !tbaa !5
  invoke void @_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull align 4 dereferenceable(4) %2)
          to label %21 unwind label %39, !llvm.loop !12

.lr.ph62:                                         ; preds = %24, %.lr.ph62
  call void @_ZNSt5stackIiSt5dequeIiSaIiEEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %51 = call noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  br i1 %51, label %._crit_edge63, label %.lr.ph62, !llvm.loop !13

._crit_edge63:                                    ; preds = %.lr.ph62, %24
  %52 = load i32, ptr @n, align 4, !tbaa !5
  %53 = add nsw i32 %52, 1
  %54 = sext i32 %52 to i64
  %55 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %54
  store i32 %53, ptr %55, align 4, !tbaa !5
  invoke void @_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull align 4 dereferenceable(4) @n)
          to label %56 unwind label %26

56:                                               ; preds = %._crit_edge63
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #6
  br label %57

57:                                               ; preds = %82, %56
  %storemerge41.in.in = phi ptr [ @n, %56 ], [ %3, %82 ]
  %storemerge41.in = load i32, ptr %storemerge41.in.in, align 4, !tbaa !5
  %storemerge41 = add nsw i32 %storemerge41.in, -1
  store i32 %storemerge41, ptr %3, align 4, !tbaa !5
  %58 = icmp sgt i32 %storemerge41.in, 1
  br i1 %58, label %.preheader53, label %60

.preheader53:                                     ; preds = %57
  %59 = call noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  br i1 %59, label %.critedge2, label %.lr.ph64

60:                                               ; preds = %57
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #6
  %61 = load i32, ptr @n, align 4, !tbaa !5
  %.not4266 = icmp slt i32 %61, 1
  br i1 %.not4266, label %.preheader51, label %.lr.ph69

.lr.ph64:                                         ; preds = %.preheader53, %71
  %62 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5stackIiSt5dequeIiSaIiEEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %63 = load i32, ptr %62, align 4, !tbaa !5
  %64 = sext i32 %63 to i64
  %65 = getelementptr inbounds [500100 x i32], ptr @a, i64 0, i64 %64
  %66 = load i32, ptr %65, align 4, !tbaa !5
  %67 = load i32, ptr %3, align 4, !tbaa !5
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds [500100 x i32], ptr @a, i64 0, i64 %68
  %70 = load i32, ptr %69, align 4, !tbaa !5
  %.not46 = icmp slt i32 %66, %70
  br i1 %.not46, label %.critedge2, label %71

71:                                               ; preds = %.lr.ph64
  call void @_ZNSt5stackIiSt5dequeIiSaIiEEE3popEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %72 = call noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  br i1 %72, label %.critedge2, label %.lr.ph64, !llvm.loop !14

73:                                               ; preds = %82
  %74 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #6
  br label %651

.critedge2:                                       ; preds = %.lr.ph64, %71, %.preheader53
  %75 = call noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  br i1 %75, label %76, label %79

76:                                               ; preds = %.critedge2
  %77 = load i32, ptr @n, align 4, !tbaa !5
  %78 = add nsw i32 %77, 1
  br label %82

79:                                               ; preds = %.critedge2
  %80 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5stackIiSt5dequeIiSaIiEEE3topEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %81 = load i32, ptr %80, align 4, !tbaa !5
  br label %82

82:                                               ; preds = %79, %76
  %.sink142 = phi i32 [ %81, %79 ], [ %78, %76 ]
  %.sink145 = load i32, ptr %3, align 4, !tbaa !5
  %83 = sext i32 %.sink145 to i64
  %84 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %83
  store i32 %.sink142, ptr %84, align 4, !tbaa !5
  invoke void @_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi(ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull align 4 dereferenceable(4) %3)
          to label %57 unwind label %73, !llvm.loop !15

.preheader52:                                     ; preds = %96
  %.not4371 = icmp slt i32 %97, 1
  br i1 %.not4371, label %.preheader51, label %.lr.ph73.preheader

.lr.ph73.preheader:                               ; preds = %.preheader52
  %85 = zext nneg i32 %97 to i64
  %xtraiter = and i64 %85, 3
  %86 = icmp ult i32 %97, 4
  br i1 %86, label %.preheader51.loopexit.unr-lcssa, label %.lr.ph73.preheader.new

.lr.ph73.preheader.new:                           ; preds = %.lr.ph73.preheader
  %unroll_iter = and i64 %85, 2147483644
  br label %.lr.ph73

.lr.ph69:                                         ; preds = %60, %96
  %87 = phi i32 [ %97, %96 ], [ %61, %60 ]
  %indvars.iv89 = phi i64 [ %indvars.iv.next90, %96 ], [ 1, %60 ]
  %88 = getelementptr inbounds [500100 x i32], ptr @tree2, i64 0, i64 %indvars.iv89
  %89 = load i32, ptr %88, align 4, !tbaa !5
  %90 = icmp eq i32 %89, 0
  br i1 %90, label %91, label %96

91:                                               ; preds = %.lr.ph69
  %92 = trunc nuw nsw i64 %indvars.iv89 to i32
  %93 = invoke noundef i32 @_Z3dfsii(i32 noundef %92, i32 noundef 1)
          to label %._crit_edge111 unwind label %94

._crit_edge111:                                   ; preds = %91
  %.pre = load i32, ptr @n, align 4, !tbaa !5
  br label %96

94:                                               ; preds = %91
  %95 = landingpad { ptr, i32 }
          cleanup
  br label %651

96:                                               ; preds = %._crit_edge111, %.lr.ph69
  %97 = phi i32 [ %.pre, %._crit_edge111 ], [ %87, %.lr.ph69 ]
  %indvars.iv.next90 = add nuw nsw i64 %indvars.iv89, 1
  %98 = sext i32 %97 to i64
  %.not42.not = icmp slt i64 %indvars.iv89, %98
  br i1 %.not42.not, label %.lr.ph69, label %.preheader52, !llvm.loop !16

.preheader51.loopexit.unr-lcssa:                  ; preds = %.lr.ph73, %.lr.ph73.preheader
  %indvars.iv92.unr = phi i64 [ 1, %.lr.ph73.preheader ], [ %indvars.iv.next93.3, %.lr.ph73 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader51, label %.lr.ph73.epil

.lr.ph73.epil:                                    ; preds = %.preheader51.loopexit.unr-lcssa, %.lr.ph73.epil
  %indvars.iv92.epil = phi i64 [ %indvars.iv.next93.epil, %.lr.ph73.epil ], [ %indvars.iv92.unr, %.preheader51.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph73.epil ], [ 0, %.preheader51.loopexit.unr-lcssa ]
  %99 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %indvars.iv92.epil
  %100 = load i32, ptr %99, align 4, !tbaa !5
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds [500100 x i32], ptr @up, i64 0, i64 %101
  %103 = load i32, ptr %102, align 4, !tbaa !5
  %104 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv92.epil
  store i32 %103, ptr %104, align 16, !tbaa !5
  %indvars.iv.next93.epil = add nuw nsw i64 %indvars.iv92.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.preheader51, label %.lr.ph73.epil, !llvm.loop !17

.preheader51:                                     ; preds = %.preheader51.loopexit.unr-lcssa, %.lr.ph73.epil, %.preheader52, %60
  %.not4371136 = phi i1 [ true, %60 ], [ true, %.preheader52 ], [ %.not4371, %.lr.ph73.epil ], [ %.not4371, %.preheader51.loopexit.unr-lcssa ]
  %.pre-phi132.in = phi i32 [ %97, %.preheader52 ], [ %61, %60 ], [ %97, %.lr.ph73.epil ], [ %97, %.preheader51.loopexit.unr-lcssa ]
  %.pre-phi132 = add i32 %.pre-phi132.in, 1
  %105 = sext i32 %.pre-phi132 to i64
  %106 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %105, i64 0
  %107 = insertelement <4 x i32> poison, i32 %.pre-phi132, i64 0
  %108 = shufflevector <4 x i32> %107, <4 x i32> poison, <4 x i32> zeroinitializer
  store <4 x i32> %108, ptr %106, align 16, !tbaa !5
  %109 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %105, i64 4
  store <4 x i32> %108, ptr %109, align 16, !tbaa !5
  %110 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %105, i64 8
  store <4 x i32> %108, ptr %110, align 16, !tbaa !5
  %111 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %105, i64 12
  store <4 x i32> %108, ptr %111, align 16, !tbaa !5
  %112 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %105, i64 16
  store <4 x i32> %108, ptr %112, align 16, !tbaa !5
  br i1 %.not4371136, label %.split.us, label %.preheader49.preheader

.lr.ph73:                                         ; preds = %.lr.ph73, %.lr.ph73.preheader.new
  %indvars.iv92 = phi i64 [ 1, %.lr.ph73.preheader.new ], [ %indvars.iv.next93.3, %.lr.ph73 ]
  %niter = phi i64 [ 0, %.lr.ph73.preheader.new ], [ %niter.next.3, %.lr.ph73 ]
  %113 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %indvars.iv92
  %114 = load i32, ptr %113, align 4, !tbaa !5
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds [500100 x i32], ptr @up, i64 0, i64 %115
  %117 = load i32, ptr %116, align 4, !tbaa !5
  %118 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv92
  store i32 %117, ptr %118, align 16, !tbaa !5
  %indvars.iv.next93 = add nuw nsw i64 %indvars.iv92, 1
  %119 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %indvars.iv.next93
  %120 = load i32, ptr %119, align 4, !tbaa !5
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds [500100 x i32], ptr @up, i64 0, i64 %121
  %123 = load i32, ptr %122, align 4, !tbaa !5
  %124 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next93
  store i32 %123, ptr %124, align 16, !tbaa !5
  %indvars.iv.next93.1 = add nuw nsw i64 %indvars.iv92, 2
  %125 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %indvars.iv.next93.1
  %126 = load i32, ptr %125, align 4, !tbaa !5
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds [500100 x i32], ptr @up, i64 0, i64 %127
  %129 = load i32, ptr %128, align 4, !tbaa !5
  %130 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next93.1
  store i32 %129, ptr %130, align 16, !tbaa !5
  %indvars.iv.next93.2 = add nuw nsw i64 %indvars.iv92, 3
  %131 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %indvars.iv.next93.2
  %132 = load i32, ptr %131, align 4, !tbaa !5
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds [500100 x i32], ptr @up, i64 0, i64 %133
  %135 = load i32, ptr %134, align 4, !tbaa !5
  %136 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next93.2
  store i32 %135, ptr %136, align 16, !tbaa !5
  %indvars.iv.next93.3 = add nuw nsw i64 %indvars.iv92, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.preheader51.loopexit.unr-lcssa, label %.lr.ph73, !llvm.loop !19

.preheader49.preheader:                           ; preds = %.preheader51
  %wide.trip.count102 = zext i32 %.pre-phi132 to i64
  %137 = add nsw i64 %wide.trip.count102, -1
  %138 = add nsw i64 %wide.trip.count102, -2
  %xtraiter148 = and i64 %137, 1
  %139 = icmp eq i64 %138, 0
  br i1 %139, label %._crit_edge78.preheader.unr-lcssa, label %.preheader49.preheader.new

.preheader49.preheader.new:                       ; preds = %.preheader49.preheader
  %unroll_iter151 = and i64 %137, -2
  br label %484

.split.us.loopexit.unr-lcssa:                     ; preds = %._crit_edge78.17, %._crit_edge78.17.preheader
  %indvars.iv99.18.unr = phi i64 [ 1, %._crit_edge78.17.preheader ], [ %indvars.iv.next100.18.1, %._crit_edge78.17 ]
  %lcmp.mod243.not = icmp eq i64 %xtraiter241, 0
  br i1 %lcmp.mod243.not, label %.split.us, label %._crit_edge78.17.epil

._crit_edge78.17.epil:                            ; preds = %.split.us.loopexit.unr-lcssa
  %140 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.18.unr, i64 18
  %141 = load i32, ptr %140, align 8, !tbaa !5
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %142, i64 18
  %144 = load i32, ptr %143, align 8, !tbaa !5
  %145 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.18.unr, i64 19
  store i32 %144, ptr %145, align 4, !tbaa !5
  br label %.split.us

.split.us:                                        ; preds = %._crit_edge78.17.epil, %.split.us.loopexit.unr-lcssa, %.preheader51
  %146 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str, ptr noundef nonnull @q)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  %147 = load i32, ptr @q, align 4, !tbaa !5
  %148 = add nsw i32 %147, -1
  store i32 %148, ptr @q, align 4, !tbaa !5
  %.not4481 = icmp eq i32 %147, 0
  br i1 %.not4481, label %._crit_edge84, label %.lr.ph83

._crit_edge78:                                    ; preds = %._crit_edge78, %._crit_edge78.preheader.new
  %indvars.iv99.1 = phi i64 [ 1, %._crit_edge78.preheader.new ], [ %indvars.iv.next100.1.1, %._crit_edge78 ]
  %niter159 = phi i64 [ 0, %._crit_edge78.preheader.new ], [ %niter159.next.1, %._crit_edge78 ]
  %149 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.1, i64 1
  %150 = load i32, ptr %149, align 4, !tbaa !5
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %151, i64 1
  %153 = load i32, ptr %152, align 4, !tbaa !5
  %154 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.1, i64 2
  store i32 %153, ptr %154, align 8, !tbaa !5
  %indvars.iv.next100.1 = add nuw nsw i64 %indvars.iv99.1, 1
  %155 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.1, i64 1
  %156 = load i32, ptr %155, align 4, !tbaa !5
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %157, i64 1
  %159 = load i32, ptr %158, align 4, !tbaa !5
  %160 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.1, i64 2
  store i32 %159, ptr %160, align 8, !tbaa !5
  %indvars.iv.next100.1.1 = add nuw nsw i64 %indvars.iv99.1, 2
  %niter159.next.1 = add i64 %niter159, 2
  %niter159.ncmp.1 = icmp eq i64 %niter159.next.1, %unroll_iter158
  br i1 %niter159.ncmp.1, label %._crit_edge78.1.preheader.unr-lcssa, label %._crit_edge78, !llvm.loop !20

._crit_edge78.1.preheader.unr-lcssa:              ; preds = %._crit_edge78, %._crit_edge78.preheader
  %indvars.iv99.1.unr = phi i64 [ 1, %._crit_edge78.preheader ], [ %indvars.iv.next100.1.1, %._crit_edge78 ]
  %lcmp.mod157.not = icmp eq i64 %xtraiter155, 0
  br i1 %lcmp.mod157.not, label %._crit_edge78.1.preheader, label %._crit_edge78.epil

._crit_edge78.epil:                               ; preds = %._crit_edge78.1.preheader.unr-lcssa
  %161 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.1.unr, i64 1
  %162 = load i32, ptr %161, align 4, !tbaa !5
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %163, i64 1
  %165 = load i32, ptr %164, align 4, !tbaa !5
  %166 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.1.unr, i64 2
  store i32 %165, ptr %166, align 8, !tbaa !5
  br label %._crit_edge78.1.preheader

._crit_edge78.1.preheader:                        ; preds = %._crit_edge78.1.preheader.unr-lcssa, %._crit_edge78.epil
  %xtraiter161 = and i64 %137, 1
  %167 = icmp eq i64 %138, 0
  br i1 %167, label %._crit_edge78.2.preheader.unr-lcssa, label %._crit_edge78.1.preheader.new

._crit_edge78.1.preheader.new:                    ; preds = %._crit_edge78.1.preheader
  %unroll_iter164 = and i64 %137, -2
  br label %._crit_edge78.1

._crit_edge78.1:                                  ; preds = %._crit_edge78.1, %._crit_edge78.1.preheader.new
  %indvars.iv99.2 = phi i64 [ 1, %._crit_edge78.1.preheader.new ], [ %indvars.iv.next100.2.1, %._crit_edge78.1 ]
  %niter165 = phi i64 [ 0, %._crit_edge78.1.preheader.new ], [ %niter165.next.1, %._crit_edge78.1 ]
  %168 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.2, i64 2
  %169 = load i32, ptr %168, align 8, !tbaa !5
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %170, i64 2
  %172 = load i32, ptr %171, align 8, !tbaa !5
  %173 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.2, i64 3
  store i32 %172, ptr %173, align 4, !tbaa !5
  %indvars.iv.next100.2 = add nuw nsw i64 %indvars.iv99.2, 1
  %174 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.2, i64 2
  %175 = load i32, ptr %174, align 8, !tbaa !5
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %176, i64 2
  %178 = load i32, ptr %177, align 8, !tbaa !5
  %179 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.2, i64 3
  store i32 %178, ptr %179, align 4, !tbaa !5
  %indvars.iv.next100.2.1 = add nuw nsw i64 %indvars.iv99.2, 2
  %niter165.next.1 = add i64 %niter165, 2
  %niter165.ncmp.1 = icmp eq i64 %niter165.next.1, %unroll_iter164
  br i1 %niter165.ncmp.1, label %._crit_edge78.2.preheader.unr-lcssa, label %._crit_edge78.1, !llvm.loop !20

._crit_edge78.2.preheader.unr-lcssa:              ; preds = %._crit_edge78.1, %._crit_edge78.1.preheader
  %indvars.iv99.2.unr = phi i64 [ 1, %._crit_edge78.1.preheader ], [ %indvars.iv.next100.2.1, %._crit_edge78.1 ]
  %lcmp.mod163.not = icmp eq i64 %xtraiter161, 0
  br i1 %lcmp.mod163.not, label %._crit_edge78.2.preheader, label %._crit_edge78.1.epil

._crit_edge78.1.epil:                             ; preds = %._crit_edge78.2.preheader.unr-lcssa
  %180 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.2.unr, i64 2
  %181 = load i32, ptr %180, align 8, !tbaa !5
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %182, i64 2
  %184 = load i32, ptr %183, align 8, !tbaa !5
  %185 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.2.unr, i64 3
  store i32 %184, ptr %185, align 4, !tbaa !5
  br label %._crit_edge78.2.preheader

._crit_edge78.2.preheader:                        ; preds = %._crit_edge78.2.preheader.unr-lcssa, %._crit_edge78.1.epil
  %xtraiter166 = and i64 %137, 1
  %186 = icmp eq i64 %138, 0
  br i1 %186, label %._crit_edge78.3.preheader.unr-lcssa, label %._crit_edge78.2.preheader.new

._crit_edge78.2.preheader.new:                    ; preds = %._crit_edge78.2.preheader
  %unroll_iter169 = and i64 %137, -2
  br label %._crit_edge78.2

._crit_edge78.2:                                  ; preds = %._crit_edge78.2, %._crit_edge78.2.preheader.new
  %indvars.iv99.3 = phi i64 [ 1, %._crit_edge78.2.preheader.new ], [ %indvars.iv.next100.3.1, %._crit_edge78.2 ]
  %niter170 = phi i64 [ 0, %._crit_edge78.2.preheader.new ], [ %niter170.next.1, %._crit_edge78.2 ]
  %187 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.3, i64 3
  %188 = load i32, ptr %187, align 4, !tbaa !5
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %189, i64 3
  %191 = load i32, ptr %190, align 4, !tbaa !5
  %192 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.3, i64 4
  store i32 %191, ptr %192, align 16, !tbaa !5
  %indvars.iv.next100.3 = add nuw nsw i64 %indvars.iv99.3, 1
  %193 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.3, i64 3
  %194 = load i32, ptr %193, align 4, !tbaa !5
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %195, i64 3
  %197 = load i32, ptr %196, align 4, !tbaa !5
  %198 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.3, i64 4
  store i32 %197, ptr %198, align 16, !tbaa !5
  %indvars.iv.next100.3.1 = add nuw nsw i64 %indvars.iv99.3, 2
  %niter170.next.1 = add i64 %niter170, 2
  %niter170.ncmp.1 = icmp eq i64 %niter170.next.1, %unroll_iter169
  br i1 %niter170.ncmp.1, label %._crit_edge78.3.preheader.unr-lcssa, label %._crit_edge78.2, !llvm.loop !20

._crit_edge78.3.preheader.unr-lcssa:              ; preds = %._crit_edge78.2, %._crit_edge78.2.preheader
  %indvars.iv99.3.unr = phi i64 [ 1, %._crit_edge78.2.preheader ], [ %indvars.iv.next100.3.1, %._crit_edge78.2 ]
  %lcmp.mod168.not = icmp eq i64 %xtraiter166, 0
  br i1 %lcmp.mod168.not, label %._crit_edge78.3.preheader, label %._crit_edge78.2.epil

._crit_edge78.2.epil:                             ; preds = %._crit_edge78.3.preheader.unr-lcssa
  %199 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.3.unr, i64 3
  %200 = load i32, ptr %199, align 4, !tbaa !5
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %201, i64 3
  %203 = load i32, ptr %202, align 4, !tbaa !5
  %204 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.3.unr, i64 4
  store i32 %203, ptr %204, align 16, !tbaa !5
  br label %._crit_edge78.3.preheader

._crit_edge78.3.preheader:                        ; preds = %._crit_edge78.3.preheader.unr-lcssa, %._crit_edge78.2.epil
  %xtraiter171 = and i64 %137, 1
  %205 = icmp eq i64 %138, 0
  br i1 %205, label %._crit_edge78.4.preheader.unr-lcssa, label %._crit_edge78.3.preheader.new

._crit_edge78.3.preheader.new:                    ; preds = %._crit_edge78.3.preheader
  %unroll_iter174 = and i64 %137, -2
  br label %._crit_edge78.3

._crit_edge78.3:                                  ; preds = %._crit_edge78.3, %._crit_edge78.3.preheader.new
  %indvars.iv99.4 = phi i64 [ 1, %._crit_edge78.3.preheader.new ], [ %indvars.iv.next100.4.1, %._crit_edge78.3 ]
  %niter175 = phi i64 [ 0, %._crit_edge78.3.preheader.new ], [ %niter175.next.1, %._crit_edge78.3 ]
  %206 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.4, i64 4
  %207 = load i32, ptr %206, align 16, !tbaa !5
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %208, i64 4
  %210 = load i32, ptr %209, align 16, !tbaa !5
  %211 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.4, i64 5
  store i32 %210, ptr %211, align 4, !tbaa !5
  %indvars.iv.next100.4 = add nuw nsw i64 %indvars.iv99.4, 1
  %212 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.4, i64 4
  %213 = load i32, ptr %212, align 16, !tbaa !5
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %214, i64 4
  %216 = load i32, ptr %215, align 16, !tbaa !5
  %217 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.4, i64 5
  store i32 %216, ptr %217, align 4, !tbaa !5
  %indvars.iv.next100.4.1 = add nuw nsw i64 %indvars.iv99.4, 2
  %niter175.next.1 = add i64 %niter175, 2
  %niter175.ncmp.1 = icmp eq i64 %niter175.next.1, %unroll_iter174
  br i1 %niter175.ncmp.1, label %._crit_edge78.4.preheader.unr-lcssa, label %._crit_edge78.3, !llvm.loop !20

._crit_edge78.4.preheader.unr-lcssa:              ; preds = %._crit_edge78.3, %._crit_edge78.3.preheader
  %indvars.iv99.4.unr = phi i64 [ 1, %._crit_edge78.3.preheader ], [ %indvars.iv.next100.4.1, %._crit_edge78.3 ]
  %lcmp.mod173.not = icmp eq i64 %xtraiter171, 0
  br i1 %lcmp.mod173.not, label %._crit_edge78.4.preheader, label %._crit_edge78.3.epil

._crit_edge78.3.epil:                             ; preds = %._crit_edge78.4.preheader.unr-lcssa
  %218 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.4.unr, i64 4
  %219 = load i32, ptr %218, align 16, !tbaa !5
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %220, i64 4
  %222 = load i32, ptr %221, align 16, !tbaa !5
  %223 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.4.unr, i64 5
  store i32 %222, ptr %223, align 4, !tbaa !5
  br label %._crit_edge78.4.preheader

._crit_edge78.4.preheader:                        ; preds = %._crit_edge78.4.preheader.unr-lcssa, %._crit_edge78.3.epil
  %xtraiter176 = and i64 %137, 1
  %224 = icmp eq i64 %138, 0
  br i1 %224, label %._crit_edge78.5.preheader.unr-lcssa, label %._crit_edge78.4.preheader.new

._crit_edge78.4.preheader.new:                    ; preds = %._crit_edge78.4.preheader
  %unroll_iter179 = and i64 %137, -2
  br label %._crit_edge78.4

._crit_edge78.4:                                  ; preds = %._crit_edge78.4, %._crit_edge78.4.preheader.new
  %indvars.iv99.5 = phi i64 [ 1, %._crit_edge78.4.preheader.new ], [ %indvars.iv.next100.5.1, %._crit_edge78.4 ]
  %niter180 = phi i64 [ 0, %._crit_edge78.4.preheader.new ], [ %niter180.next.1, %._crit_edge78.4 ]
  %225 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.5, i64 5
  %226 = load i32, ptr %225, align 4, !tbaa !5
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %227, i64 5
  %229 = load i32, ptr %228, align 4, !tbaa !5
  %230 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.5, i64 6
  store i32 %229, ptr %230, align 8, !tbaa !5
  %indvars.iv.next100.5 = add nuw nsw i64 %indvars.iv99.5, 1
  %231 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.5, i64 5
  %232 = load i32, ptr %231, align 4, !tbaa !5
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %233, i64 5
  %235 = load i32, ptr %234, align 4, !tbaa !5
  %236 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.5, i64 6
  store i32 %235, ptr %236, align 8, !tbaa !5
  %indvars.iv.next100.5.1 = add nuw nsw i64 %indvars.iv99.5, 2
  %niter180.next.1 = add i64 %niter180, 2
  %niter180.ncmp.1 = icmp eq i64 %niter180.next.1, %unroll_iter179
  br i1 %niter180.ncmp.1, label %._crit_edge78.5.preheader.unr-lcssa, label %._crit_edge78.4, !llvm.loop !20

._crit_edge78.5.preheader.unr-lcssa:              ; preds = %._crit_edge78.4, %._crit_edge78.4.preheader
  %indvars.iv99.5.unr = phi i64 [ 1, %._crit_edge78.4.preheader ], [ %indvars.iv.next100.5.1, %._crit_edge78.4 ]
  %lcmp.mod178.not = icmp eq i64 %xtraiter176, 0
  br i1 %lcmp.mod178.not, label %._crit_edge78.5.preheader, label %._crit_edge78.4.epil

._crit_edge78.4.epil:                             ; preds = %._crit_edge78.5.preheader.unr-lcssa
  %237 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.5.unr, i64 5
  %238 = load i32, ptr %237, align 4, !tbaa !5
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %239, i64 5
  %241 = load i32, ptr %240, align 4, !tbaa !5
  %242 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.5.unr, i64 6
  store i32 %241, ptr %242, align 8, !tbaa !5
  br label %._crit_edge78.5.preheader

._crit_edge78.5.preheader:                        ; preds = %._crit_edge78.5.preheader.unr-lcssa, %._crit_edge78.4.epil
  %xtraiter181 = and i64 %137, 1
  %243 = icmp eq i64 %138, 0
  br i1 %243, label %._crit_edge78.6.preheader.unr-lcssa, label %._crit_edge78.5.preheader.new

._crit_edge78.5.preheader.new:                    ; preds = %._crit_edge78.5.preheader
  %unroll_iter184 = and i64 %137, -2
  br label %._crit_edge78.5

._crit_edge78.5:                                  ; preds = %._crit_edge78.5, %._crit_edge78.5.preheader.new
  %indvars.iv99.6 = phi i64 [ 1, %._crit_edge78.5.preheader.new ], [ %indvars.iv.next100.6.1, %._crit_edge78.5 ]
  %niter185 = phi i64 [ 0, %._crit_edge78.5.preheader.new ], [ %niter185.next.1, %._crit_edge78.5 ]
  %244 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.6, i64 6
  %245 = load i32, ptr %244, align 8, !tbaa !5
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %246, i64 6
  %248 = load i32, ptr %247, align 8, !tbaa !5
  %249 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.6, i64 7
  store i32 %248, ptr %249, align 4, !tbaa !5
  %indvars.iv.next100.6 = add nuw nsw i64 %indvars.iv99.6, 1
  %250 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.6, i64 6
  %251 = load i32, ptr %250, align 8, !tbaa !5
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %252, i64 6
  %254 = load i32, ptr %253, align 8, !tbaa !5
  %255 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.6, i64 7
  store i32 %254, ptr %255, align 4, !tbaa !5
  %indvars.iv.next100.6.1 = add nuw nsw i64 %indvars.iv99.6, 2
  %niter185.next.1 = add i64 %niter185, 2
  %niter185.ncmp.1 = icmp eq i64 %niter185.next.1, %unroll_iter184
  br i1 %niter185.ncmp.1, label %._crit_edge78.6.preheader.unr-lcssa, label %._crit_edge78.5, !llvm.loop !20

._crit_edge78.6.preheader.unr-lcssa:              ; preds = %._crit_edge78.5, %._crit_edge78.5.preheader
  %indvars.iv99.6.unr = phi i64 [ 1, %._crit_edge78.5.preheader ], [ %indvars.iv.next100.6.1, %._crit_edge78.5 ]
  %lcmp.mod183.not = icmp eq i64 %xtraiter181, 0
  br i1 %lcmp.mod183.not, label %._crit_edge78.6.preheader, label %._crit_edge78.5.epil

._crit_edge78.5.epil:                             ; preds = %._crit_edge78.6.preheader.unr-lcssa
  %256 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.6.unr, i64 6
  %257 = load i32, ptr %256, align 8, !tbaa !5
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %258, i64 6
  %260 = load i32, ptr %259, align 8, !tbaa !5
  %261 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.6.unr, i64 7
  store i32 %260, ptr %261, align 4, !tbaa !5
  br label %._crit_edge78.6.preheader

._crit_edge78.6.preheader:                        ; preds = %._crit_edge78.6.preheader.unr-lcssa, %._crit_edge78.5.epil
  %xtraiter186 = and i64 %137, 1
  %262 = icmp eq i64 %138, 0
  br i1 %262, label %._crit_edge78.7.preheader.unr-lcssa, label %._crit_edge78.6.preheader.new

._crit_edge78.6.preheader.new:                    ; preds = %._crit_edge78.6.preheader
  %unroll_iter189 = and i64 %137, -2
  br label %._crit_edge78.6

._crit_edge78.6:                                  ; preds = %._crit_edge78.6, %._crit_edge78.6.preheader.new
  %indvars.iv99.7 = phi i64 [ 1, %._crit_edge78.6.preheader.new ], [ %indvars.iv.next100.7.1, %._crit_edge78.6 ]
  %niter190 = phi i64 [ 0, %._crit_edge78.6.preheader.new ], [ %niter190.next.1, %._crit_edge78.6 ]
  %263 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.7, i64 7
  %264 = load i32, ptr %263, align 4, !tbaa !5
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %265, i64 7
  %267 = load i32, ptr %266, align 4, !tbaa !5
  %268 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.7, i64 8
  store i32 %267, ptr %268, align 16, !tbaa !5
  %indvars.iv.next100.7 = add nuw nsw i64 %indvars.iv99.7, 1
  %269 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.7, i64 7
  %270 = load i32, ptr %269, align 4, !tbaa !5
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %271, i64 7
  %273 = load i32, ptr %272, align 4, !tbaa !5
  %274 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.7, i64 8
  store i32 %273, ptr %274, align 16, !tbaa !5
  %indvars.iv.next100.7.1 = add nuw nsw i64 %indvars.iv99.7, 2
  %niter190.next.1 = add i64 %niter190, 2
  %niter190.ncmp.1 = icmp eq i64 %niter190.next.1, %unroll_iter189
  br i1 %niter190.ncmp.1, label %._crit_edge78.7.preheader.unr-lcssa, label %._crit_edge78.6, !llvm.loop !20

._crit_edge78.7.preheader.unr-lcssa:              ; preds = %._crit_edge78.6, %._crit_edge78.6.preheader
  %indvars.iv99.7.unr = phi i64 [ 1, %._crit_edge78.6.preheader ], [ %indvars.iv.next100.7.1, %._crit_edge78.6 ]
  %lcmp.mod188.not = icmp eq i64 %xtraiter186, 0
  br i1 %lcmp.mod188.not, label %._crit_edge78.7.preheader, label %._crit_edge78.6.epil

._crit_edge78.6.epil:                             ; preds = %._crit_edge78.7.preheader.unr-lcssa
  %275 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.7.unr, i64 7
  %276 = load i32, ptr %275, align 4, !tbaa !5
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %277, i64 7
  %279 = load i32, ptr %278, align 4, !tbaa !5
  %280 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.7.unr, i64 8
  store i32 %279, ptr %280, align 16, !tbaa !5
  br label %._crit_edge78.7.preheader

._crit_edge78.7.preheader:                        ; preds = %._crit_edge78.7.preheader.unr-lcssa, %._crit_edge78.6.epil
  %xtraiter191 = and i64 %137, 1
  %281 = icmp eq i64 %138, 0
  br i1 %281, label %._crit_edge78.8.preheader.unr-lcssa, label %._crit_edge78.7.preheader.new

._crit_edge78.7.preheader.new:                    ; preds = %._crit_edge78.7.preheader
  %unroll_iter194 = and i64 %137, -2
  br label %._crit_edge78.7

._crit_edge78.7:                                  ; preds = %._crit_edge78.7, %._crit_edge78.7.preheader.new
  %indvars.iv99.8 = phi i64 [ 1, %._crit_edge78.7.preheader.new ], [ %indvars.iv.next100.8.1, %._crit_edge78.7 ]
  %niter195 = phi i64 [ 0, %._crit_edge78.7.preheader.new ], [ %niter195.next.1, %._crit_edge78.7 ]
  %282 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.8, i64 8
  %283 = load i32, ptr %282, align 16, !tbaa !5
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %284, i64 8
  %286 = load i32, ptr %285, align 16, !tbaa !5
  %287 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.8, i64 9
  store i32 %286, ptr %287, align 4, !tbaa !5
  %indvars.iv.next100.8 = add nuw nsw i64 %indvars.iv99.8, 1
  %288 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.8, i64 8
  %289 = load i32, ptr %288, align 16, !tbaa !5
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %290, i64 8
  %292 = load i32, ptr %291, align 16, !tbaa !5
  %293 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.8, i64 9
  store i32 %292, ptr %293, align 4, !tbaa !5
  %indvars.iv.next100.8.1 = add nuw nsw i64 %indvars.iv99.8, 2
  %niter195.next.1 = add i64 %niter195, 2
  %niter195.ncmp.1 = icmp eq i64 %niter195.next.1, %unroll_iter194
  br i1 %niter195.ncmp.1, label %._crit_edge78.8.preheader.unr-lcssa, label %._crit_edge78.7, !llvm.loop !20

._crit_edge78.8.preheader.unr-lcssa:              ; preds = %._crit_edge78.7, %._crit_edge78.7.preheader
  %indvars.iv99.8.unr = phi i64 [ 1, %._crit_edge78.7.preheader ], [ %indvars.iv.next100.8.1, %._crit_edge78.7 ]
  %lcmp.mod193.not = icmp eq i64 %xtraiter191, 0
  br i1 %lcmp.mod193.not, label %._crit_edge78.8.preheader, label %._crit_edge78.7.epil

._crit_edge78.7.epil:                             ; preds = %._crit_edge78.8.preheader.unr-lcssa
  %294 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.8.unr, i64 8
  %295 = load i32, ptr %294, align 16, !tbaa !5
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %296, i64 8
  %298 = load i32, ptr %297, align 16, !tbaa !5
  %299 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.8.unr, i64 9
  store i32 %298, ptr %299, align 4, !tbaa !5
  br label %._crit_edge78.8.preheader

._crit_edge78.8.preheader:                        ; preds = %._crit_edge78.8.preheader.unr-lcssa, %._crit_edge78.7.epil
  %xtraiter196 = and i64 %137, 1
  %300 = icmp eq i64 %138, 0
  br i1 %300, label %._crit_edge78.9.preheader.unr-lcssa, label %._crit_edge78.8.preheader.new

._crit_edge78.8.preheader.new:                    ; preds = %._crit_edge78.8.preheader
  %unroll_iter199 = and i64 %137, -2
  br label %._crit_edge78.8

._crit_edge78.8:                                  ; preds = %._crit_edge78.8, %._crit_edge78.8.preheader.new
  %indvars.iv99.9 = phi i64 [ 1, %._crit_edge78.8.preheader.new ], [ %indvars.iv.next100.9.1, %._crit_edge78.8 ]
  %niter200 = phi i64 [ 0, %._crit_edge78.8.preheader.new ], [ %niter200.next.1, %._crit_edge78.8 ]
  %301 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.9, i64 9
  %302 = load i32, ptr %301, align 4, !tbaa !5
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %303, i64 9
  %305 = load i32, ptr %304, align 4, !tbaa !5
  %306 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.9, i64 10
  store i32 %305, ptr %306, align 8, !tbaa !5
  %indvars.iv.next100.9 = add nuw nsw i64 %indvars.iv99.9, 1
  %307 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.9, i64 9
  %308 = load i32, ptr %307, align 4, !tbaa !5
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %309, i64 9
  %311 = load i32, ptr %310, align 4, !tbaa !5
  %312 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.9, i64 10
  store i32 %311, ptr %312, align 8, !tbaa !5
  %indvars.iv.next100.9.1 = add nuw nsw i64 %indvars.iv99.9, 2
  %niter200.next.1 = add i64 %niter200, 2
  %niter200.ncmp.1 = icmp eq i64 %niter200.next.1, %unroll_iter199
  br i1 %niter200.ncmp.1, label %._crit_edge78.9.preheader.unr-lcssa, label %._crit_edge78.8, !llvm.loop !20

._crit_edge78.9.preheader.unr-lcssa:              ; preds = %._crit_edge78.8, %._crit_edge78.8.preheader
  %indvars.iv99.9.unr = phi i64 [ 1, %._crit_edge78.8.preheader ], [ %indvars.iv.next100.9.1, %._crit_edge78.8 ]
  %lcmp.mod198.not = icmp eq i64 %xtraiter196, 0
  br i1 %lcmp.mod198.not, label %._crit_edge78.9.preheader, label %._crit_edge78.8.epil

._crit_edge78.8.epil:                             ; preds = %._crit_edge78.9.preheader.unr-lcssa
  %313 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.9.unr, i64 9
  %314 = load i32, ptr %313, align 4, !tbaa !5
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %315, i64 9
  %317 = load i32, ptr %316, align 4, !tbaa !5
  %318 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.9.unr, i64 10
  store i32 %317, ptr %318, align 8, !tbaa !5
  br label %._crit_edge78.9.preheader

._crit_edge78.9.preheader:                        ; preds = %._crit_edge78.9.preheader.unr-lcssa, %._crit_edge78.8.epil
  %xtraiter201 = and i64 %137, 1
  %319 = icmp eq i64 %138, 0
  br i1 %319, label %._crit_edge78.10.preheader.unr-lcssa, label %._crit_edge78.9.preheader.new

._crit_edge78.9.preheader.new:                    ; preds = %._crit_edge78.9.preheader
  %unroll_iter204 = and i64 %137, -2
  br label %._crit_edge78.9

._crit_edge78.9:                                  ; preds = %._crit_edge78.9, %._crit_edge78.9.preheader.new
  %indvars.iv99.10 = phi i64 [ 1, %._crit_edge78.9.preheader.new ], [ %indvars.iv.next100.10.1, %._crit_edge78.9 ]
  %niter205 = phi i64 [ 0, %._crit_edge78.9.preheader.new ], [ %niter205.next.1, %._crit_edge78.9 ]
  %320 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.10, i64 10
  %321 = load i32, ptr %320, align 8, !tbaa !5
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %322, i64 10
  %324 = load i32, ptr %323, align 8, !tbaa !5
  %325 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.10, i64 11
  store i32 %324, ptr %325, align 4, !tbaa !5
  %indvars.iv.next100.10 = add nuw nsw i64 %indvars.iv99.10, 1
  %326 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.10, i64 10
  %327 = load i32, ptr %326, align 8, !tbaa !5
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %328, i64 10
  %330 = load i32, ptr %329, align 8, !tbaa !5
  %331 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.10, i64 11
  store i32 %330, ptr %331, align 4, !tbaa !5
  %indvars.iv.next100.10.1 = add nuw nsw i64 %indvars.iv99.10, 2
  %niter205.next.1 = add i64 %niter205, 2
  %niter205.ncmp.1 = icmp eq i64 %niter205.next.1, %unroll_iter204
  br i1 %niter205.ncmp.1, label %._crit_edge78.10.preheader.unr-lcssa, label %._crit_edge78.9, !llvm.loop !20

._crit_edge78.10.preheader.unr-lcssa:             ; preds = %._crit_edge78.9, %._crit_edge78.9.preheader
  %indvars.iv99.10.unr = phi i64 [ 1, %._crit_edge78.9.preheader ], [ %indvars.iv.next100.10.1, %._crit_edge78.9 ]
  %lcmp.mod203.not = icmp eq i64 %xtraiter201, 0
  br i1 %lcmp.mod203.not, label %._crit_edge78.10.preheader, label %._crit_edge78.9.epil

._crit_edge78.9.epil:                             ; preds = %._crit_edge78.10.preheader.unr-lcssa
  %332 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.10.unr, i64 10
  %333 = load i32, ptr %332, align 8, !tbaa !5
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %334, i64 10
  %336 = load i32, ptr %335, align 8, !tbaa !5
  %337 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.10.unr, i64 11
  store i32 %336, ptr %337, align 4, !tbaa !5
  br label %._crit_edge78.10.preheader

._crit_edge78.10.preheader:                       ; preds = %._crit_edge78.10.preheader.unr-lcssa, %._crit_edge78.9.epil
  %xtraiter206 = and i64 %137, 1
  %338 = icmp eq i64 %138, 0
  br i1 %338, label %._crit_edge78.11.preheader.unr-lcssa, label %._crit_edge78.10.preheader.new

._crit_edge78.10.preheader.new:                   ; preds = %._crit_edge78.10.preheader
  %unroll_iter209 = and i64 %137, -2
  br label %._crit_edge78.10

._crit_edge78.10:                                 ; preds = %._crit_edge78.10, %._crit_edge78.10.preheader.new
  %indvars.iv99.11 = phi i64 [ 1, %._crit_edge78.10.preheader.new ], [ %indvars.iv.next100.11.1, %._crit_edge78.10 ]
  %niter210 = phi i64 [ 0, %._crit_edge78.10.preheader.new ], [ %niter210.next.1, %._crit_edge78.10 ]
  %339 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.11, i64 11
  %340 = load i32, ptr %339, align 4, !tbaa !5
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %341, i64 11
  %343 = load i32, ptr %342, align 4, !tbaa !5
  %344 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.11, i64 12
  store i32 %343, ptr %344, align 16, !tbaa !5
  %indvars.iv.next100.11 = add nuw nsw i64 %indvars.iv99.11, 1
  %345 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.11, i64 11
  %346 = load i32, ptr %345, align 4, !tbaa !5
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %347, i64 11
  %349 = load i32, ptr %348, align 4, !tbaa !5
  %350 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.11, i64 12
  store i32 %349, ptr %350, align 16, !tbaa !5
  %indvars.iv.next100.11.1 = add nuw nsw i64 %indvars.iv99.11, 2
  %niter210.next.1 = add i64 %niter210, 2
  %niter210.ncmp.1 = icmp eq i64 %niter210.next.1, %unroll_iter209
  br i1 %niter210.ncmp.1, label %._crit_edge78.11.preheader.unr-lcssa, label %._crit_edge78.10, !llvm.loop !20

._crit_edge78.11.preheader.unr-lcssa:             ; preds = %._crit_edge78.10, %._crit_edge78.10.preheader
  %indvars.iv99.11.unr = phi i64 [ 1, %._crit_edge78.10.preheader ], [ %indvars.iv.next100.11.1, %._crit_edge78.10 ]
  %lcmp.mod208.not = icmp eq i64 %xtraiter206, 0
  br i1 %lcmp.mod208.not, label %._crit_edge78.11.preheader, label %._crit_edge78.10.epil

._crit_edge78.10.epil:                            ; preds = %._crit_edge78.11.preheader.unr-lcssa
  %351 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.11.unr, i64 11
  %352 = load i32, ptr %351, align 4, !tbaa !5
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %353, i64 11
  %355 = load i32, ptr %354, align 4, !tbaa !5
  %356 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.11.unr, i64 12
  store i32 %355, ptr %356, align 16, !tbaa !5
  br label %._crit_edge78.11.preheader

._crit_edge78.11.preheader:                       ; preds = %._crit_edge78.11.preheader.unr-lcssa, %._crit_edge78.10.epil
  %xtraiter211 = and i64 %137, 1
  %357 = icmp eq i64 %138, 0
  br i1 %357, label %._crit_edge78.12.preheader.unr-lcssa, label %._crit_edge78.11.preheader.new

._crit_edge78.11.preheader.new:                   ; preds = %._crit_edge78.11.preheader
  %unroll_iter214 = and i64 %137, -2
  br label %._crit_edge78.11

._crit_edge78.11:                                 ; preds = %._crit_edge78.11, %._crit_edge78.11.preheader.new
  %indvars.iv99.12 = phi i64 [ 1, %._crit_edge78.11.preheader.new ], [ %indvars.iv.next100.12.1, %._crit_edge78.11 ]
  %niter215 = phi i64 [ 0, %._crit_edge78.11.preheader.new ], [ %niter215.next.1, %._crit_edge78.11 ]
  %358 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.12, i64 12
  %359 = load i32, ptr %358, align 16, !tbaa !5
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %360, i64 12
  %362 = load i32, ptr %361, align 16, !tbaa !5
  %363 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.12, i64 13
  store i32 %362, ptr %363, align 4, !tbaa !5
  %indvars.iv.next100.12 = add nuw nsw i64 %indvars.iv99.12, 1
  %364 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.12, i64 12
  %365 = load i32, ptr %364, align 16, !tbaa !5
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %366, i64 12
  %368 = load i32, ptr %367, align 16, !tbaa !5
  %369 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.12, i64 13
  store i32 %368, ptr %369, align 4, !tbaa !5
  %indvars.iv.next100.12.1 = add nuw nsw i64 %indvars.iv99.12, 2
  %niter215.next.1 = add i64 %niter215, 2
  %niter215.ncmp.1 = icmp eq i64 %niter215.next.1, %unroll_iter214
  br i1 %niter215.ncmp.1, label %._crit_edge78.12.preheader.unr-lcssa, label %._crit_edge78.11, !llvm.loop !20

._crit_edge78.12.preheader.unr-lcssa:             ; preds = %._crit_edge78.11, %._crit_edge78.11.preheader
  %indvars.iv99.12.unr = phi i64 [ 1, %._crit_edge78.11.preheader ], [ %indvars.iv.next100.12.1, %._crit_edge78.11 ]
  %lcmp.mod213.not = icmp eq i64 %xtraiter211, 0
  br i1 %lcmp.mod213.not, label %._crit_edge78.12.preheader, label %._crit_edge78.11.epil

._crit_edge78.11.epil:                            ; preds = %._crit_edge78.12.preheader.unr-lcssa
  %370 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.12.unr, i64 12
  %371 = load i32, ptr %370, align 16, !tbaa !5
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %372, i64 12
  %374 = load i32, ptr %373, align 16, !tbaa !5
  %375 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.12.unr, i64 13
  store i32 %374, ptr %375, align 4, !tbaa !5
  br label %._crit_edge78.12.preheader

._crit_edge78.12.preheader:                       ; preds = %._crit_edge78.12.preheader.unr-lcssa, %._crit_edge78.11.epil
  %xtraiter216 = and i64 %137, 1
  %376 = icmp eq i64 %138, 0
  br i1 %376, label %._crit_edge78.13.preheader.unr-lcssa, label %._crit_edge78.12.preheader.new

._crit_edge78.12.preheader.new:                   ; preds = %._crit_edge78.12.preheader
  %unroll_iter219 = and i64 %137, -2
  br label %._crit_edge78.12

._crit_edge78.12:                                 ; preds = %._crit_edge78.12, %._crit_edge78.12.preheader.new
  %indvars.iv99.13 = phi i64 [ 1, %._crit_edge78.12.preheader.new ], [ %indvars.iv.next100.13.1, %._crit_edge78.12 ]
  %niter220 = phi i64 [ 0, %._crit_edge78.12.preheader.new ], [ %niter220.next.1, %._crit_edge78.12 ]
  %377 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.13, i64 13
  %378 = load i32, ptr %377, align 4, !tbaa !5
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %379, i64 13
  %381 = load i32, ptr %380, align 4, !tbaa !5
  %382 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.13, i64 14
  store i32 %381, ptr %382, align 8, !tbaa !5
  %indvars.iv.next100.13 = add nuw nsw i64 %indvars.iv99.13, 1
  %383 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.13, i64 13
  %384 = load i32, ptr %383, align 4, !tbaa !5
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %385, i64 13
  %387 = load i32, ptr %386, align 4, !tbaa !5
  %388 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.13, i64 14
  store i32 %387, ptr %388, align 8, !tbaa !5
  %indvars.iv.next100.13.1 = add nuw nsw i64 %indvars.iv99.13, 2
  %niter220.next.1 = add i64 %niter220, 2
  %niter220.ncmp.1 = icmp eq i64 %niter220.next.1, %unroll_iter219
  br i1 %niter220.ncmp.1, label %._crit_edge78.13.preheader.unr-lcssa, label %._crit_edge78.12, !llvm.loop !20

._crit_edge78.13.preheader.unr-lcssa:             ; preds = %._crit_edge78.12, %._crit_edge78.12.preheader
  %indvars.iv99.13.unr = phi i64 [ 1, %._crit_edge78.12.preheader ], [ %indvars.iv.next100.13.1, %._crit_edge78.12 ]
  %lcmp.mod218.not = icmp eq i64 %xtraiter216, 0
  br i1 %lcmp.mod218.not, label %._crit_edge78.13.preheader, label %._crit_edge78.12.epil

._crit_edge78.12.epil:                            ; preds = %._crit_edge78.13.preheader.unr-lcssa
  %389 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.13.unr, i64 13
  %390 = load i32, ptr %389, align 4, !tbaa !5
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %391, i64 13
  %393 = load i32, ptr %392, align 4, !tbaa !5
  %394 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.13.unr, i64 14
  store i32 %393, ptr %394, align 8, !tbaa !5
  br label %._crit_edge78.13.preheader

._crit_edge78.13.preheader:                       ; preds = %._crit_edge78.13.preheader.unr-lcssa, %._crit_edge78.12.epil
  %xtraiter221 = and i64 %137, 1
  %395 = icmp eq i64 %138, 0
  br i1 %395, label %._crit_edge78.14.preheader.unr-lcssa, label %._crit_edge78.13.preheader.new

._crit_edge78.13.preheader.new:                   ; preds = %._crit_edge78.13.preheader
  %unroll_iter224 = and i64 %137, -2
  br label %._crit_edge78.13

._crit_edge78.13:                                 ; preds = %._crit_edge78.13, %._crit_edge78.13.preheader.new
  %indvars.iv99.14 = phi i64 [ 1, %._crit_edge78.13.preheader.new ], [ %indvars.iv.next100.14.1, %._crit_edge78.13 ]
  %niter225 = phi i64 [ 0, %._crit_edge78.13.preheader.new ], [ %niter225.next.1, %._crit_edge78.13 ]
  %396 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.14, i64 14
  %397 = load i32, ptr %396, align 8, !tbaa !5
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %398, i64 14
  %400 = load i32, ptr %399, align 8, !tbaa !5
  %401 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.14, i64 15
  store i32 %400, ptr %401, align 4, !tbaa !5
  %indvars.iv.next100.14 = add nuw nsw i64 %indvars.iv99.14, 1
  %402 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.14, i64 14
  %403 = load i32, ptr %402, align 8, !tbaa !5
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %404, i64 14
  %406 = load i32, ptr %405, align 8, !tbaa !5
  %407 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.14, i64 15
  store i32 %406, ptr %407, align 4, !tbaa !5
  %indvars.iv.next100.14.1 = add nuw nsw i64 %indvars.iv99.14, 2
  %niter225.next.1 = add i64 %niter225, 2
  %niter225.ncmp.1 = icmp eq i64 %niter225.next.1, %unroll_iter224
  br i1 %niter225.ncmp.1, label %._crit_edge78.14.preheader.unr-lcssa, label %._crit_edge78.13, !llvm.loop !20

._crit_edge78.14.preheader.unr-lcssa:             ; preds = %._crit_edge78.13, %._crit_edge78.13.preheader
  %indvars.iv99.14.unr = phi i64 [ 1, %._crit_edge78.13.preheader ], [ %indvars.iv.next100.14.1, %._crit_edge78.13 ]
  %lcmp.mod223.not = icmp eq i64 %xtraiter221, 0
  br i1 %lcmp.mod223.not, label %._crit_edge78.14.preheader, label %._crit_edge78.13.epil

._crit_edge78.13.epil:                            ; preds = %._crit_edge78.14.preheader.unr-lcssa
  %408 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.14.unr, i64 14
  %409 = load i32, ptr %408, align 8, !tbaa !5
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %410, i64 14
  %412 = load i32, ptr %411, align 8, !tbaa !5
  %413 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.14.unr, i64 15
  store i32 %412, ptr %413, align 4, !tbaa !5
  br label %._crit_edge78.14.preheader

._crit_edge78.14.preheader:                       ; preds = %._crit_edge78.14.preheader.unr-lcssa, %._crit_edge78.13.epil
  %xtraiter226 = and i64 %137, 1
  %414 = icmp eq i64 %138, 0
  br i1 %414, label %._crit_edge78.15.preheader.unr-lcssa, label %._crit_edge78.14.preheader.new

._crit_edge78.14.preheader.new:                   ; preds = %._crit_edge78.14.preheader
  %unroll_iter229 = and i64 %137, -2
  br label %._crit_edge78.14

._crit_edge78.14:                                 ; preds = %._crit_edge78.14, %._crit_edge78.14.preheader.new
  %indvars.iv99.15 = phi i64 [ 1, %._crit_edge78.14.preheader.new ], [ %indvars.iv.next100.15.1, %._crit_edge78.14 ]
  %niter230 = phi i64 [ 0, %._crit_edge78.14.preheader.new ], [ %niter230.next.1, %._crit_edge78.14 ]
  %415 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.15, i64 15
  %416 = load i32, ptr %415, align 4, !tbaa !5
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %417, i64 15
  %419 = load i32, ptr %418, align 4, !tbaa !5
  %420 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.15, i64 16
  store i32 %419, ptr %420, align 16, !tbaa !5
  %indvars.iv.next100.15 = add nuw nsw i64 %indvars.iv99.15, 1
  %421 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.15, i64 15
  %422 = load i32, ptr %421, align 4, !tbaa !5
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %423, i64 15
  %425 = load i32, ptr %424, align 4, !tbaa !5
  %426 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.15, i64 16
  store i32 %425, ptr %426, align 16, !tbaa !5
  %indvars.iv.next100.15.1 = add nuw nsw i64 %indvars.iv99.15, 2
  %niter230.next.1 = add i64 %niter230, 2
  %niter230.ncmp.1 = icmp eq i64 %niter230.next.1, %unroll_iter229
  br i1 %niter230.ncmp.1, label %._crit_edge78.15.preheader.unr-lcssa, label %._crit_edge78.14, !llvm.loop !20

._crit_edge78.15.preheader.unr-lcssa:             ; preds = %._crit_edge78.14, %._crit_edge78.14.preheader
  %indvars.iv99.15.unr = phi i64 [ 1, %._crit_edge78.14.preheader ], [ %indvars.iv.next100.15.1, %._crit_edge78.14 ]
  %lcmp.mod228.not = icmp eq i64 %xtraiter226, 0
  br i1 %lcmp.mod228.not, label %._crit_edge78.15.preheader, label %._crit_edge78.14.epil

._crit_edge78.14.epil:                            ; preds = %._crit_edge78.15.preheader.unr-lcssa
  %427 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.15.unr, i64 15
  %428 = load i32, ptr %427, align 4, !tbaa !5
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %429, i64 15
  %431 = load i32, ptr %430, align 4, !tbaa !5
  %432 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.15.unr, i64 16
  store i32 %431, ptr %432, align 16, !tbaa !5
  br label %._crit_edge78.15.preheader

._crit_edge78.15.preheader:                       ; preds = %._crit_edge78.15.preheader.unr-lcssa, %._crit_edge78.14.epil
  %xtraiter231 = and i64 %137, 1
  %433 = icmp eq i64 %138, 0
  br i1 %433, label %._crit_edge78.16.preheader.unr-lcssa, label %._crit_edge78.15.preheader.new

._crit_edge78.15.preheader.new:                   ; preds = %._crit_edge78.15.preheader
  %unroll_iter234 = and i64 %137, -2
  br label %._crit_edge78.15

._crit_edge78.15:                                 ; preds = %._crit_edge78.15, %._crit_edge78.15.preheader.new
  %indvars.iv99.16 = phi i64 [ 1, %._crit_edge78.15.preheader.new ], [ %indvars.iv.next100.16.1, %._crit_edge78.15 ]
  %niter235 = phi i64 [ 0, %._crit_edge78.15.preheader.new ], [ %niter235.next.1, %._crit_edge78.15 ]
  %434 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.16, i64 16
  %435 = load i32, ptr %434, align 16, !tbaa !5
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %436, i64 16
  %438 = load i32, ptr %437, align 16, !tbaa !5
  %439 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.16, i64 17
  store i32 %438, ptr %439, align 4, !tbaa !5
  %indvars.iv.next100.16 = add nuw nsw i64 %indvars.iv99.16, 1
  %440 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.16, i64 16
  %441 = load i32, ptr %440, align 16, !tbaa !5
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %442, i64 16
  %444 = load i32, ptr %443, align 16, !tbaa !5
  %445 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.16, i64 17
  store i32 %444, ptr %445, align 4, !tbaa !5
  %indvars.iv.next100.16.1 = add nuw nsw i64 %indvars.iv99.16, 2
  %niter235.next.1 = add i64 %niter235, 2
  %niter235.ncmp.1 = icmp eq i64 %niter235.next.1, %unroll_iter234
  br i1 %niter235.ncmp.1, label %._crit_edge78.16.preheader.unr-lcssa, label %._crit_edge78.15, !llvm.loop !20

._crit_edge78.16.preheader.unr-lcssa:             ; preds = %._crit_edge78.15, %._crit_edge78.15.preheader
  %indvars.iv99.16.unr = phi i64 [ 1, %._crit_edge78.15.preheader ], [ %indvars.iv.next100.16.1, %._crit_edge78.15 ]
  %lcmp.mod233.not = icmp eq i64 %xtraiter231, 0
  br i1 %lcmp.mod233.not, label %._crit_edge78.16.preheader, label %._crit_edge78.15.epil

._crit_edge78.15.epil:                            ; preds = %._crit_edge78.16.preheader.unr-lcssa
  %446 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.16.unr, i64 16
  %447 = load i32, ptr %446, align 16, !tbaa !5
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %448, i64 16
  %450 = load i32, ptr %449, align 16, !tbaa !5
  %451 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.16.unr, i64 17
  store i32 %450, ptr %451, align 4, !tbaa !5
  br label %._crit_edge78.16.preheader

._crit_edge78.16.preheader:                       ; preds = %._crit_edge78.16.preheader.unr-lcssa, %._crit_edge78.15.epil
  %xtraiter236 = and i64 %137, 1
  %452 = icmp eq i64 %138, 0
  br i1 %452, label %._crit_edge78.17.preheader.unr-lcssa, label %._crit_edge78.16.preheader.new

._crit_edge78.16.preheader.new:                   ; preds = %._crit_edge78.16.preheader
  %unroll_iter239 = and i64 %137, -2
  br label %._crit_edge78.16

._crit_edge78.16:                                 ; preds = %._crit_edge78.16, %._crit_edge78.16.preheader.new
  %indvars.iv99.17 = phi i64 [ 1, %._crit_edge78.16.preheader.new ], [ %indvars.iv.next100.17.1, %._crit_edge78.16 ]
  %niter240 = phi i64 [ 0, %._crit_edge78.16.preheader.new ], [ %niter240.next.1, %._crit_edge78.16 ]
  %453 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.17, i64 17
  %454 = load i32, ptr %453, align 4, !tbaa !5
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %455, i64 17
  %457 = load i32, ptr %456, align 4, !tbaa !5
  %458 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.17, i64 18
  store i32 %457, ptr %458, align 8, !tbaa !5
  %indvars.iv.next100.17 = add nuw nsw i64 %indvars.iv99.17, 1
  %459 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.17, i64 17
  %460 = load i32, ptr %459, align 4, !tbaa !5
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %461, i64 17
  %463 = load i32, ptr %462, align 4, !tbaa !5
  %464 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.17, i64 18
  store i32 %463, ptr %464, align 8, !tbaa !5
  %indvars.iv.next100.17.1 = add nuw nsw i64 %indvars.iv99.17, 2
  %niter240.next.1 = add i64 %niter240, 2
  %niter240.ncmp.1 = icmp eq i64 %niter240.next.1, %unroll_iter239
  br i1 %niter240.ncmp.1, label %._crit_edge78.17.preheader.unr-lcssa, label %._crit_edge78.16, !llvm.loop !20

._crit_edge78.17.preheader.unr-lcssa:             ; preds = %._crit_edge78.16, %._crit_edge78.16.preheader
  %indvars.iv99.17.unr = phi i64 [ 1, %._crit_edge78.16.preheader ], [ %indvars.iv.next100.17.1, %._crit_edge78.16 ]
  %lcmp.mod238.not = icmp eq i64 %xtraiter236, 0
  br i1 %lcmp.mod238.not, label %._crit_edge78.17.preheader, label %._crit_edge78.16.epil

._crit_edge78.16.epil:                            ; preds = %._crit_edge78.17.preheader.unr-lcssa
  %465 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.17.unr, i64 17
  %466 = load i32, ptr %465, align 4, !tbaa !5
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %467, i64 17
  %469 = load i32, ptr %468, align 4, !tbaa !5
  %470 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.17.unr, i64 18
  store i32 %469, ptr %470, align 8, !tbaa !5
  br label %._crit_edge78.17.preheader

._crit_edge78.17.preheader:                       ; preds = %._crit_edge78.17.preheader.unr-lcssa, %._crit_edge78.16.epil
  %xtraiter241 = and i64 %137, 1
  %471 = icmp eq i64 %138, 0
  br i1 %471, label %.split.us.loopexit.unr-lcssa, label %._crit_edge78.17.preheader.new

._crit_edge78.17.preheader.new:                   ; preds = %._crit_edge78.17.preheader
  %unroll_iter244 = and i64 %137, -2
  br label %._crit_edge78.17

._crit_edge78.17:                                 ; preds = %._crit_edge78.17, %._crit_edge78.17.preheader.new
  %indvars.iv99.18 = phi i64 [ 1, %._crit_edge78.17.preheader.new ], [ %indvars.iv.next100.18.1, %._crit_edge78.17 ]
  %niter245 = phi i64 [ 0, %._crit_edge78.17.preheader.new ], [ %niter245.next.1, %._crit_edge78.17 ]
  %472 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.18, i64 18
  %473 = load i32, ptr %472, align 8, !tbaa !5
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %474, i64 18
  %476 = load i32, ptr %475, align 8, !tbaa !5
  %477 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.18, i64 19
  store i32 %476, ptr %477, align 4, !tbaa !5
  %indvars.iv.next100.18 = add nuw nsw i64 %indvars.iv99.18, 1
  %478 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.18, i64 18
  %479 = load i32, ptr %478, align 8, !tbaa !5
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %480, i64 18
  %482 = load i32, ptr %481, align 8, !tbaa !5
  %483 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100.18, i64 19
  store i32 %482, ptr %483, align 4, !tbaa !5
  %indvars.iv.next100.18.1 = add nuw nsw i64 %indvars.iv99.18, 2
  %niter245.next.1 = add i64 %niter245, 2
  %niter245.ncmp.1 = icmp eq i64 %niter245.next.1, %unroll_iter244
  br i1 %niter245.ncmp.1, label %.split.us.loopexit.unr-lcssa, label %._crit_edge78.17, !llvm.loop !20

484:                                              ; preds = %484, %.preheader49.preheader.new
  %indvars.iv99 = phi i64 [ 1, %.preheader49.preheader.new ], [ %indvars.iv.next100.1154, %484 ]
  %niter152 = phi i64 [ 0, %.preheader49.preheader.new ], [ %niter152.next.1, %484 ]
  %485 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99, i64 0
  %486 = load i32, ptr %485, align 16, !tbaa !5
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %487, i64 0
  %489 = load i32, ptr %488, align 16, !tbaa !5
  %490 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99, i64 1
  store i32 %489, ptr %490, align 4, !tbaa !5
  %indvars.iv.next100 = add nuw nsw i64 %indvars.iv99, 1
  %491 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100, i64 0
  %492 = load i32, ptr %491, align 16, !tbaa !5
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %493, i64 0
  %495 = load i32, ptr %494, align 16, !tbaa !5
  %496 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv.next100, i64 1
  store i32 %495, ptr %496, align 4, !tbaa !5
  %indvars.iv.next100.1154 = add nuw nsw i64 %indvars.iv99, 2
  %niter152.next.1 = add i64 %niter152, 2
  %niter152.ncmp.1 = icmp eq i64 %niter152.next.1, %unroll_iter151
  br i1 %niter152.ncmp.1, label %._crit_edge78.preheader.unr-lcssa, label %484, !llvm.loop !20

._crit_edge78.preheader.unr-lcssa:                ; preds = %484, %.preheader49.preheader
  %indvars.iv99.unr = phi i64 [ 1, %.preheader49.preheader ], [ %indvars.iv.next100.1154, %484 ]
  %lcmp.mod150.not = icmp eq i64 %xtraiter148, 0
  br i1 %lcmp.mod150.not, label %._crit_edge78.preheader, label %._crit_edge78.preheader.epilog-lcssa

._crit_edge78.preheader.epilog-lcssa:             ; preds = %._crit_edge78.preheader.unr-lcssa
  %497 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.unr, i64 0
  %498 = load i32, ptr %497, align 16, !tbaa !5
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %499, i64 0
  %501 = load i32, ptr %500, align 16, !tbaa !5
  %502 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %indvars.iv99.unr, i64 1
  store i32 %501, ptr %502, align 4, !tbaa !5
  br label %._crit_edge78.preheader

._crit_edge78.preheader:                          ; preds = %._crit_edge78.preheader.unr-lcssa, %._crit_edge78.preheader.epilog-lcssa
  %xtraiter155 = and i64 %137, 1
  %503 = icmp eq i64 %138, 0
  br i1 %503, label %._crit_edge78.1.preheader.unr-lcssa, label %._crit_edge78.preheader.new

._crit_edge78.preheader.new:                      ; preds = %._crit_edge78.preheader
  %unroll_iter158 = and i64 %137, -2
  br label %._crit_edge78

.lr.ph83:                                         ; preds = %.split.us, %647
  %504 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.1, ptr noundef nonnull %4, ptr noundef nonnull %5)
  %505 = load i32, ptr %4, align 4, !tbaa !5
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds [500100 x i32], ptr @tree2, i64 0, i64 %506
  %508 = load i32, ptr %507, align 4, !tbaa !5
  %509 = load i32, ptr %5, align 4, !tbaa !5
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds [500100 x i32], ptr @tree2, i64 0, i64 %510
  %512 = load i32, ptr %511, align 4, !tbaa !5
  %513 = icmp eq i32 %508, %512
  br i1 %513, label %647, label %.preheader

.preheader:                                       ; preds = %.lr.ph83
  %514 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %506, i64 19
  %515 = load i32, ptr %514, align 4, !tbaa !5
  %516 = icmp slt i32 %515, %509
  br i1 %516, label %517, label %518

517:                                              ; preds = %.preheader
  store i32 %515, ptr %4, align 4, !tbaa !5
  %.pre112 = sext i32 %515 to i64
  br label %518

518:                                              ; preds = %.preheader, %517
  %.pre-phi = phi i64 [ %506, %.preheader ], [ %.pre112, %517 ]
  %519 = phi i32 [ %505, %.preheader ], [ %515, %517 ]
  %520 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %.pre-phi, i64 18
  %521 = load i32, ptr %520, align 8, !tbaa !5
  %522 = icmp slt i32 %521, %509
  br i1 %522, label %523, label %524

523:                                              ; preds = %518
  store i32 %521, ptr %4, align 4, !tbaa !5
  br label %524

524:                                              ; preds = %523, %518
  %525 = phi i32 [ %519, %518 ], [ %521, %523 ]
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %526, i64 17
  %528 = load i32, ptr %527, align 4, !tbaa !5
  %529 = icmp slt i32 %528, %509
  br i1 %529, label %530, label %531

530:                                              ; preds = %524
  store i32 %528, ptr %4, align 4, !tbaa !5
  %.pre113 = sext i32 %528 to i64
  br label %531

531:                                              ; preds = %530, %524
  %.pre-phi114 = phi i64 [ %.pre113, %530 ], [ %526, %524 ]
  %532 = phi i32 [ %528, %530 ], [ %525, %524 ]
  %533 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %.pre-phi114, i64 16
  %534 = load i32, ptr %533, align 16, !tbaa !5
  %535 = icmp slt i32 %534, %509
  br i1 %535, label %536, label %537

536:                                              ; preds = %531
  store i32 %534, ptr %4, align 4, !tbaa !5
  br label %537

537:                                              ; preds = %536, %531
  %538 = phi i32 [ %532, %531 ], [ %534, %536 ]
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %539, i64 15
  %541 = load i32, ptr %540, align 4, !tbaa !5
  %542 = icmp slt i32 %541, %509
  br i1 %542, label %543, label %544

543:                                              ; preds = %537
  store i32 %541, ptr %4, align 4, !tbaa !5
  %.pre115 = sext i32 %541 to i64
  br label %544

544:                                              ; preds = %543, %537
  %.pre-phi116 = phi i64 [ %.pre115, %543 ], [ %539, %537 ]
  %545 = phi i32 [ %541, %543 ], [ %538, %537 ]
  %546 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %.pre-phi116, i64 14
  %547 = load i32, ptr %546, align 8, !tbaa !5
  %548 = icmp slt i32 %547, %509
  br i1 %548, label %549, label %550

549:                                              ; preds = %544
  store i32 %547, ptr %4, align 4, !tbaa !5
  br label %550

550:                                              ; preds = %549, %544
  %551 = phi i32 [ %545, %544 ], [ %547, %549 ]
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %552, i64 13
  %554 = load i32, ptr %553, align 4, !tbaa !5
  %555 = icmp slt i32 %554, %509
  br i1 %555, label %556, label %557

556:                                              ; preds = %550
  store i32 %554, ptr %4, align 4, !tbaa !5
  %.pre117 = sext i32 %554 to i64
  br label %557

557:                                              ; preds = %556, %550
  %.pre-phi118 = phi i64 [ %.pre117, %556 ], [ %552, %550 ]
  %558 = phi i32 [ %554, %556 ], [ %551, %550 ]
  %559 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %.pre-phi118, i64 12
  %560 = load i32, ptr %559, align 16, !tbaa !5
  %561 = icmp slt i32 %560, %509
  br i1 %561, label %562, label %563

562:                                              ; preds = %557
  store i32 %560, ptr %4, align 4, !tbaa !5
  br label %563

563:                                              ; preds = %562, %557
  %564 = phi i32 [ %558, %557 ], [ %560, %562 ]
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %565, i64 11
  %567 = load i32, ptr %566, align 4, !tbaa !5
  %568 = icmp slt i32 %567, %509
  br i1 %568, label %569, label %570

569:                                              ; preds = %563
  store i32 %567, ptr %4, align 4, !tbaa !5
  %.pre119 = sext i32 %567 to i64
  br label %570

570:                                              ; preds = %569, %563
  %.pre-phi120 = phi i64 [ %.pre119, %569 ], [ %565, %563 ]
  %571 = phi i32 [ %567, %569 ], [ %564, %563 ]
  %572 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %.pre-phi120, i64 10
  %573 = load i32, ptr %572, align 8, !tbaa !5
  %574 = icmp slt i32 %573, %509
  br i1 %574, label %575, label %576

575:                                              ; preds = %570
  store i32 %573, ptr %4, align 4, !tbaa !5
  br label %576

576:                                              ; preds = %575, %570
  %577 = phi i32 [ %571, %570 ], [ %573, %575 ]
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %578, i64 9
  %580 = load i32, ptr %579, align 4, !tbaa !5
  %581 = icmp slt i32 %580, %509
  br i1 %581, label %582, label %583

582:                                              ; preds = %576
  store i32 %580, ptr %4, align 4, !tbaa !5
  %.pre121 = sext i32 %580 to i64
  br label %583

583:                                              ; preds = %582, %576
  %.pre-phi122 = phi i64 [ %.pre121, %582 ], [ %578, %576 ]
  %584 = phi i32 [ %580, %582 ], [ %577, %576 ]
  %585 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %.pre-phi122, i64 8
  %586 = load i32, ptr %585, align 16, !tbaa !5
  %587 = icmp slt i32 %586, %509
  br i1 %587, label %588, label %589

588:                                              ; preds = %583
  store i32 %586, ptr %4, align 4, !tbaa !5
  br label %589

589:                                              ; preds = %588, %583
  %590 = phi i32 [ %584, %583 ], [ %586, %588 ]
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %591, i64 7
  %593 = load i32, ptr %592, align 4, !tbaa !5
  %594 = icmp slt i32 %593, %509
  br i1 %594, label %595, label %596

595:                                              ; preds = %589
  store i32 %593, ptr %4, align 4, !tbaa !5
  %.pre123 = sext i32 %593 to i64
  br label %596

596:                                              ; preds = %595, %589
  %.pre-phi124 = phi i64 [ %.pre123, %595 ], [ %591, %589 ]
  %597 = phi i32 [ %593, %595 ], [ %590, %589 ]
  %598 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %.pre-phi124, i64 6
  %599 = load i32, ptr %598, align 8, !tbaa !5
  %600 = icmp slt i32 %599, %509
  br i1 %600, label %601, label %602

601:                                              ; preds = %596
  store i32 %599, ptr %4, align 4, !tbaa !5
  br label %602

602:                                              ; preds = %601, %596
  %603 = phi i32 [ %597, %596 ], [ %599, %601 ]
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %604, i64 5
  %606 = load i32, ptr %605, align 4, !tbaa !5
  %607 = icmp slt i32 %606, %509
  br i1 %607, label %608, label %609

608:                                              ; preds = %602
  store i32 %606, ptr %4, align 4, !tbaa !5
  %.pre125 = sext i32 %606 to i64
  br label %609

609:                                              ; preds = %608, %602
  %.pre-phi126 = phi i64 [ %.pre125, %608 ], [ %604, %602 ]
  %610 = phi i32 [ %606, %608 ], [ %603, %602 ]
  %611 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %.pre-phi126, i64 4
  %612 = load i32, ptr %611, align 16, !tbaa !5
  %613 = icmp slt i32 %612, %509
  br i1 %613, label %614, label %615

614:                                              ; preds = %609
  store i32 %612, ptr %4, align 4, !tbaa !5
  br label %615

615:                                              ; preds = %614, %609
  %616 = phi i32 [ %610, %609 ], [ %612, %614 ]
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %617, i64 3
  %619 = load i32, ptr %618, align 4, !tbaa !5
  %620 = icmp slt i32 %619, %509
  br i1 %620, label %621, label %622

621:                                              ; preds = %615
  store i32 %619, ptr %4, align 4, !tbaa !5
  %.pre127 = sext i32 %619 to i64
  br label %622

622:                                              ; preds = %621, %615
  %.pre-phi128 = phi i64 [ %.pre127, %621 ], [ %617, %615 ]
  %623 = phi i32 [ %619, %621 ], [ %616, %615 ]
  %624 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %.pre-phi128, i64 2
  %625 = load i32, ptr %624, align 8, !tbaa !5
  %626 = icmp slt i32 %625, %509
  br i1 %626, label %627, label %628

627:                                              ; preds = %622
  store i32 %625, ptr %4, align 4, !tbaa !5
  br label %628

628:                                              ; preds = %627, %622
  %629 = phi i32 [ %623, %622 ], [ %625, %627 ]
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %630, i64 1
  %632 = load i32, ptr %631, align 4, !tbaa !5
  %633 = icmp slt i32 %632, %509
  br i1 %633, label %634, label %635

634:                                              ; preds = %628
  store i32 %632, ptr %4, align 4, !tbaa !5
  %.pre129 = sext i32 %632 to i64
  br label %635

635:                                              ; preds = %634, %628
  %.pre-phi130 = phi i64 [ %.pre129, %634 ], [ %630, %628 ]
  %636 = phi i32 [ %632, %634 ], [ %629, %628 ]
  %637 = getelementptr inbounds [500100 x [20 x i32]], ptr @jump, i64 0, i64 %.pre-phi130, i64 0
  %638 = load i32, ptr %637, align 16, !tbaa !5
  %639 = icmp slt i32 %638, %509
  br i1 %639, label %640, label %641

640:                                              ; preds = %635
  store i32 %638, ptr %4, align 4, !tbaa !5
  br label %641

641:                                              ; preds = %640, %635
  %642 = phi i32 [ %638, %640 ], [ %636, %635 ]
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds [500100 x i32], ptr @down, i64 0, i64 %643
  %645 = load i32, ptr %644, align 4, !tbaa !5
  %646 = icmp eq i32 %645, %509
  %.str.2..str.3 = select i1 %646, ptr @.str.2, ptr @.str.3
  br label %647

647:                                              ; preds = %641, %.lr.ph83
  %.str.2.sink = phi ptr [ @.str.2, %.lr.ph83 ], [ %.str.2..str.3, %641 ]
  %648 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.2.sink)
  %649 = load i32, ptr @q, align 4, !tbaa !5
  %650 = add nsw i32 %649, -1
  store i32 %650, ptr @q, align 4, !tbaa !5
  %.not44 = icmp eq i32 %649, 0
  br i1 %.not44, label %._crit_edge84, label %.lr.ph83, !llvm.loop !21

._crit_edge84:                                    ; preds = %647, %.split.us
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @_ZNSt5stackIiSt5dequeIiSaIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %1) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %1) #6
  ret i32 0

651:                                              ; preds = %94, %73, %39, %26
  %.pn = phi { ptr, i32 } [ %40, %39 ], [ %74, %73 ], [ %95, %94 ], [ %27, %26 ]
  call void @_ZNSt5stackIiSt5dequeIiSaIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(80) %1) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %1) #6
  resume { ptr, i32 } %.pn
}

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt5stackIiSt5dequeIiSaIiEEEC2IS2_vEEv(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt5stackIiSt5dequeIiSaIiEEE4pushERKi(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt5stackIiSt5dequeIiSaIiEEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt5stackIiSt5dequeIiSaIiEEE3topEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt5stackIiSt5dequeIiSaIiEEE3popEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt5stackIiSt5dequeIiSaIiEEED2Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #5 align 2

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 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 #2 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { inlinehint 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 #6 = { 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 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.unroll.disable"}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}


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