Nikita Popov c23b4fbdbb
[IR] Remove size argument from lifetime intrinsics (#150248)
Now that #149310 has restricted lifetime intrinsics to only work on
allocas, we can also drop the explicit size argument. Instead, the size
is implied by the alloca.

This removes the ability to only mark a prefix of an alloca alive/dead.
We never used that capability, so we should remove the need to handle
that possibility everywhere (though many key places, including stack
coloring, did not actually respect this).
2025-08-08 11:09:34 +02:00

1324 lines
57 KiB
LLVM

; RUN: opt -loop-reduce -S < %s | FileCheck %s
; RUN: opt -loop-reduce -lsr-complexity-limit=2147483647 -S < %s | FileCheck %s
; Test compile time should be <1sec (no hang).
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.start.p0(ptr nocapture) #1
; Function Attrs: argmemonly nounwind
declare void @llvm.lifetime.end.p0(ptr nocapture) #1
; Function Attrs: nounwind readnone uwtable
define dso_local i32 @foo(i32 %arg, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6) local_unnamed_addr #3 {
; CHECK-LABEL: @foo(
; CHECK: bb33:
; CHECK: lsr.iv
; CHECK: bb58:
; CHECK: lsr.iv
; CHECK: bb81:
; CHECK: lsr.iv
; CHECK: bb104:
; CHECK: lsr.iv
; CHECK: bb127:
; CHECK: lsr.iv
; CHECK: bb150:
; CHECK: lsr.iv
; CHECK: bb173:
; CHECK: lsr.iv
; CHECK: bb196:
; CHECK: lsr.iv
; CHECK: bb219:
; CHECK: lsr.iv
; CHECK: bb242:
; CHECK: lsr.iv
; CHECK: bb265:
; CHECK: lsr.iv
; CHECK: bb288:
; CHECK: lsr.iv
; CHECK: bb311:
; CHECK: lsr.iv
; CHECK: bb340:
; CHECK: lsr.iv
; CHECK: bb403:
; CHECK: lsr.iv
; CHECK: bb433:
; CHECK: lsr.iv
; CHECK: bb567:
; CHECK: lsr.iv
; CHECK: bb611:
; CHECK: lsr.iv
; CHECK: bb655:
; CHECK: lsr.iv
; CHECK: bb699:
; CHECK: lsr.iv
; CHECK: bb743:
; CHECK: lsr.iv
; CHECK: bb787:
; CHECK: lsr.iv
; CHECK: bb831:
; CHECK: lsr.iv
; CHECK: bb875:
; CHECK: lsr.iv
; CHECK: bb919:
; CHECK: lsr.iv
; CHECK: bb963:
; CHECK: lsr.iv
; CHECK: bb1007:
; CHECK: lsr.iv
; CHECK: ret
;
bb:
%tmp = alloca [100 x i32], align 16
%tmp7 = alloca [100 x i32], align 16
%tmp8 = alloca [100 x i32], align 16
%tmp9 = alloca [100 x [100 x i32]], align 16
%tmp10 = alloca [100 x i32], align 16
%tmp11 = alloca [100 x [100 x i32]], align 16
%tmp12 = alloca [100 x i32], align 16
%tmp13 = alloca [100 x i32], align 16
%tmp14 = alloca [100 x [100 x i32]], align 16
%tmp15 = alloca [100 x i32], align 16
%tmp16 = alloca [100 x [100 x i32]], align 16
%tmp17 = alloca [100 x [100 x i32]], align 16
%tmp18 = alloca [100 x [100 x i32]], align 16
call void @llvm.lifetime.start.p0(ptr nonnull %tmp) #4
call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp, i8 0, i64 400, i1 false)
call void @llvm.lifetime.start.p0(ptr nonnull %tmp7) #4
call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp7, i8 0, i64 400, i1 false)
call void @llvm.lifetime.start.p0(ptr nonnull %tmp8) #4
call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp8, i8 0, i64 400, i1 false)
call void @llvm.lifetime.start.p0(ptr nonnull %tmp9) #4
call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp9, i8 0, i64 40000, i1 false)
call void @llvm.lifetime.start.p0(ptr nonnull %tmp10) #4
call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp10, i8 0, i64 400, i1 false)
call void @llvm.lifetime.start.p0(ptr nonnull %tmp11) #4
call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp11, i8 0, i64 40000, i1 false)
call void @llvm.lifetime.start.p0(ptr nonnull %tmp12) #4
call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp12, i8 0, i64 400, i1 false)
call void @llvm.lifetime.start.p0(ptr nonnull %tmp13) #4
call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp13, i8 0, i64 400, i1 false)
call void @llvm.lifetime.start.p0(ptr nonnull %tmp14) #4
call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp14, i8 0, i64 40000, i1 false)
call void @llvm.lifetime.start.p0(ptr nonnull %tmp15) #4
call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp15, i8 0, i64 400, i1 false)
call void @llvm.lifetime.start.p0(ptr nonnull %tmp16) #4
call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp16, i8 0, i64 40000, i1 false)
call void @llvm.lifetime.start.p0(ptr nonnull %tmp17) #4
call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp17, i8 0, i64 40000, i1 false)
call void @llvm.lifetime.start.p0(ptr nonnull %tmp18) #4
call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp18, i8 0, i64 40000, i1 false)
%tmp32 = getelementptr inbounds [100 x i32], ptr %tmp8, i64 0, i64 3
br label %bb33
bb33: ; preds = %bb33, %bb
%tmp34 = phi i64 [ 0, %bb ], [ %tmp54, %bb33 ]
%tmp35 = trunc i64 %tmp34 to i32
%tmp36 = add i32 %tmp35, 48
%tmp37 = urem i32 %tmp36, 101
%tmp38 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp34
store i32 %tmp37, ptr %tmp38, align 16
%tmp39 = or i64 %tmp34, 1
%tmp40 = trunc i64 %tmp39 to i32
%tmp41 = sub i32 48, %tmp40
%tmp42 = urem i32 %tmp41, 101
%tmp43 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp39
store i32 %tmp42, ptr %tmp43, align 4
%tmp44 = or i64 %tmp34, 2
%tmp45 = trunc i64 %tmp44 to i32
%tmp46 = add i32 %tmp45, 48
%tmp47 = urem i32 %tmp46, 101
%tmp48 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp44
store i32 %tmp47, ptr %tmp48, align 8
%tmp49 = or i64 %tmp34, 3
%tmp50 = trunc i64 %tmp49 to i32
%tmp51 = sub i32 48, %tmp50
%tmp52 = urem i32 %tmp51, 101
%tmp53 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp49
store i32 %tmp52, ptr %tmp53, align 4
%tmp54 = add nuw nsw i64 %tmp34, 4
%tmp55 = icmp eq i64 %tmp54, 100
br i1 %tmp55, label %bb56, label %bb33
bb56: ; preds = %bb33
%tmp57 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp16, i64 0, i64 88, i64 91
br label %bb58
bb58: ; preds = %bb58, %bb56
%tmp59 = phi i64 [ 0, %bb56 ], [ %tmp79, %bb58 ]
%tmp60 = trunc i64 %tmp59 to i32
%tmp61 = add i32 %tmp60, 83
%tmp62 = urem i32 %tmp61, 101
%tmp63 = getelementptr inbounds [100 x i32], ptr %tmp7, i64 0, i64 %tmp59
store i32 %tmp62, ptr %tmp63, align 16
%tmp64 = or i64 %tmp59, 1
%tmp65 = trunc i64 %tmp64 to i32
%tmp66 = sub i32 83, %tmp65
%tmp67 = urem i32 %tmp66, 101
%tmp68 = getelementptr inbounds [100 x i32], ptr %tmp7, i64 0, i64 %tmp64
store i32 %tmp67, ptr %tmp68, align 4
%tmp69 = or i64 %tmp59, 2
%tmp70 = trunc i64 %tmp69 to i32
%tmp71 = add i32 %tmp70, 83
%tmp72 = urem i32 %tmp71, 101
%tmp73 = getelementptr inbounds [100 x i32], ptr %tmp7, i64 0, i64 %tmp69
store i32 %tmp72, ptr %tmp73, align 8
%tmp74 = or i64 %tmp59, 3
%tmp75 = trunc i64 %tmp74 to i32
%tmp76 = sub i32 83, %tmp75
%tmp77 = urem i32 %tmp76, 101
%tmp78 = getelementptr inbounds [100 x i32], ptr %tmp7, i64 0, i64 %tmp74
store i32 %tmp77, ptr %tmp78, align 4
%tmp79 = add nuw nsw i64 %tmp59, 4
%tmp80 = icmp eq i64 %tmp79, 100
br i1 %tmp80, label %bb81, label %bb58
bb81: ; preds = %bb81, %bb58
%tmp82 = phi i64 [ %tmp102, %bb81 ], [ 0, %bb58 ]
%tmp83 = trunc i64 %tmp82 to i32
%tmp84 = add i32 %tmp83, 15
%tmp85 = urem i32 %tmp84, 101
%tmp86 = getelementptr inbounds [100 x i32], ptr %tmp8, i64 0, i64 %tmp82
store i32 %tmp85, ptr %tmp86, align 16
%tmp87 = or i64 %tmp82, 1
%tmp88 = trunc i64 %tmp87 to i32
%tmp89 = sub i32 15, %tmp88
%tmp90 = urem i32 %tmp89, 101
%tmp91 = getelementptr inbounds [100 x i32], ptr %tmp8, i64 0, i64 %tmp87
store i32 %tmp90, ptr %tmp91, align 4
%tmp92 = or i64 %tmp82, 2
%tmp93 = trunc i64 %tmp92 to i32
%tmp94 = add i32 %tmp93, 15
%tmp95 = urem i32 %tmp94, 101
%tmp96 = getelementptr inbounds [100 x i32], ptr %tmp8, i64 0, i64 %tmp92
store i32 %tmp95, ptr %tmp96, align 8
%tmp97 = or i64 %tmp82, 3
%tmp98 = trunc i64 %tmp97 to i32
%tmp99 = sub i32 15, %tmp98
%tmp100 = urem i32 %tmp99, 101
%tmp101 = getelementptr inbounds [100 x i32], ptr %tmp8, i64 0, i64 %tmp97
store i32 %tmp100, ptr %tmp101, align 4
%tmp102 = add nuw nsw i64 %tmp82, 4
%tmp103 = icmp eq i64 %tmp102, 100
br i1 %tmp103, label %bb104, label %bb81
bb104: ; preds = %bb104, %bb81
%tmp105 = phi i64 [ %tmp125, %bb104 ], [ 0, %bb81 ]
%tmp106 = trunc i64 %tmp105 to i32
%tmp107 = add i32 %tmp106, 60
%tmp108 = urem i32 %tmp107, 101
%tmp109 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp9, i64 0, i64 0, i64 %tmp105
store i32 %tmp108, ptr %tmp109, align 16
%tmp110 = or i64 %tmp105, 1
%tmp111 = trunc i64 %tmp110 to i32
%tmp112 = sub i32 60, %tmp111
%tmp113 = urem i32 %tmp112, 101
%tmp114 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp9, i64 0, i64 0, i64 %tmp110
store i32 %tmp113, ptr %tmp114, align 4
%tmp115 = or i64 %tmp105, 2
%tmp116 = trunc i64 %tmp115 to i32
%tmp117 = add i32 %tmp116, 60
%tmp118 = urem i32 %tmp117, 101
%tmp119 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp9, i64 0, i64 0, i64 %tmp115
store i32 %tmp118, ptr %tmp119, align 8
%tmp120 = or i64 %tmp105, 3
%tmp121 = trunc i64 %tmp120 to i32
%tmp122 = sub i32 60, %tmp121
%tmp123 = urem i32 %tmp122, 101
%tmp124 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp9, i64 0, i64 0, i64 %tmp120
store i32 %tmp123, ptr %tmp124, align 4
%tmp125 = add nuw nsw i64 %tmp105, 4
%tmp126 = icmp eq i64 %tmp125, 10000
br i1 %tmp126, label %bb127, label %bb104
bb127: ; preds = %bb127, %bb104
%tmp128 = phi i64 [ %tmp148, %bb127 ], [ 0, %bb104 ]
%tmp129 = trunc i64 %tmp128 to i32
%tmp130 = add i32 %tmp129, 87
%tmp131 = urem i32 %tmp130, 101
%tmp132 = getelementptr inbounds [100 x i32], ptr %tmp10, i64 0, i64 %tmp128
store i32 %tmp131, ptr %tmp132, align 16
%tmp133 = or i64 %tmp128, 1
%tmp134 = trunc i64 %tmp133 to i32
%tmp135 = sub i32 87, %tmp134
%tmp136 = urem i32 %tmp135, 101
%tmp137 = getelementptr inbounds [100 x i32], ptr %tmp10, i64 0, i64 %tmp133
store i32 %tmp136, ptr %tmp137, align 4
%tmp138 = or i64 %tmp128, 2
%tmp139 = trunc i64 %tmp138 to i32
%tmp140 = add i32 %tmp139, 87
%tmp141 = urem i32 %tmp140, 101
%tmp142 = getelementptr inbounds [100 x i32], ptr %tmp10, i64 0, i64 %tmp138
store i32 %tmp141, ptr %tmp142, align 8
%tmp143 = or i64 %tmp128, 3
%tmp144 = trunc i64 %tmp143 to i32
%tmp145 = sub i32 87, %tmp144
%tmp146 = urem i32 %tmp145, 101
%tmp147 = getelementptr inbounds [100 x i32], ptr %tmp10, i64 0, i64 %tmp143
store i32 %tmp146, ptr %tmp147, align 4
%tmp148 = add nuw nsw i64 %tmp128, 4
%tmp149 = icmp eq i64 %tmp148, 100
br i1 %tmp149, label %bb150, label %bb127
bb150: ; preds = %bb150, %bb127
%tmp151 = phi i64 [ %tmp171, %bb150 ], [ 0, %bb127 ]
%tmp152 = trunc i64 %tmp151 to i32
%tmp153 = add i32 %tmp152, 36
%tmp154 = urem i32 %tmp153, 101
%tmp155 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp11, i64 0, i64 0, i64 %tmp151
store i32 %tmp154, ptr %tmp155, align 16
%tmp156 = or i64 %tmp151, 1
%tmp157 = trunc i64 %tmp156 to i32
%tmp158 = sub i32 36, %tmp157
%tmp159 = urem i32 %tmp158, 101
%tmp160 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp11, i64 0, i64 0, i64 %tmp156
store i32 %tmp159, ptr %tmp160, align 4
%tmp161 = or i64 %tmp151, 2
%tmp162 = trunc i64 %tmp161 to i32
%tmp163 = add i32 %tmp162, 36
%tmp164 = urem i32 %tmp163, 101
%tmp165 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp11, i64 0, i64 0, i64 %tmp161
store i32 %tmp164, ptr %tmp165, align 8
%tmp166 = or i64 %tmp151, 3
%tmp167 = trunc i64 %tmp166 to i32
%tmp168 = sub i32 36, %tmp167
%tmp169 = urem i32 %tmp168, 101
%tmp170 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp11, i64 0, i64 0, i64 %tmp166
store i32 %tmp169, ptr %tmp170, align 4
%tmp171 = add nuw nsw i64 %tmp151, 4
%tmp172 = icmp eq i64 %tmp171, 10000
br i1 %tmp172, label %bb173, label %bb150
bb173: ; preds = %bb173, %bb150
%tmp174 = phi i64 [ %tmp194, %bb173 ], [ 0, %bb150 ]
%tmp175 = trunc i64 %tmp174 to i32
%tmp176 = add i32 %tmp175, 27
%tmp177 = urem i32 %tmp176, 101
%tmp178 = getelementptr inbounds [100 x i32], ptr %tmp12, i64 0, i64 %tmp174
store i32 %tmp177, ptr %tmp178, align 16
%tmp179 = or i64 %tmp174, 1
%tmp180 = trunc i64 %tmp179 to i32
%tmp181 = sub i32 27, %tmp180
%tmp182 = urem i32 %tmp181, 101
%tmp183 = getelementptr inbounds [100 x i32], ptr %tmp12, i64 0, i64 %tmp179
store i32 %tmp182, ptr %tmp183, align 4
%tmp184 = or i64 %tmp174, 2
%tmp185 = trunc i64 %tmp184 to i32
%tmp186 = add i32 %tmp185, 27
%tmp187 = urem i32 %tmp186, 101
%tmp188 = getelementptr inbounds [100 x i32], ptr %tmp12, i64 0, i64 %tmp184
store i32 %tmp187, ptr %tmp188, align 8
%tmp189 = or i64 %tmp174, 3
%tmp190 = trunc i64 %tmp189 to i32
%tmp191 = sub i32 27, %tmp190
%tmp192 = urem i32 %tmp191, 101
%tmp193 = getelementptr inbounds [100 x i32], ptr %tmp12, i64 0, i64 %tmp189
store i32 %tmp192, ptr %tmp193, align 4
%tmp194 = add nuw nsw i64 %tmp174, 4
%tmp195 = icmp eq i64 %tmp194, 100
br i1 %tmp195, label %bb196, label %bb173
bb196: ; preds = %bb196, %bb173
%tmp197 = phi i64 [ %tmp217, %bb196 ], [ 0, %bb173 ]
%tmp198 = trunc i64 %tmp197 to i32
%tmp199 = add i32 %tmp198, 40
%tmp200 = urem i32 %tmp199, 101
%tmp201 = getelementptr inbounds [100 x i32], ptr %tmp13, i64 0, i64 %tmp197
store i32 %tmp200, ptr %tmp201, align 16
%tmp202 = or i64 %tmp197, 1
%tmp203 = trunc i64 %tmp202 to i32
%tmp204 = sub i32 40, %tmp203
%tmp205 = urem i32 %tmp204, 101
%tmp206 = getelementptr inbounds [100 x i32], ptr %tmp13, i64 0, i64 %tmp202
store i32 %tmp205, ptr %tmp206, align 4
%tmp207 = or i64 %tmp197, 2
%tmp208 = trunc i64 %tmp207 to i32
%tmp209 = add i32 %tmp208, 40
%tmp210 = urem i32 %tmp209, 101
%tmp211 = getelementptr inbounds [100 x i32], ptr %tmp13, i64 0, i64 %tmp207
store i32 %tmp210, ptr %tmp211, align 8
%tmp212 = or i64 %tmp197, 3
%tmp213 = trunc i64 %tmp212 to i32
%tmp214 = sub i32 40, %tmp213
%tmp215 = urem i32 %tmp214, 101
%tmp216 = getelementptr inbounds [100 x i32], ptr %tmp13, i64 0, i64 %tmp212
store i32 %tmp215, ptr %tmp216, align 4
%tmp217 = add nuw nsw i64 %tmp197, 4
%tmp218 = icmp eq i64 %tmp217, 100
br i1 %tmp218, label %bb219, label %bb196
bb219: ; preds = %bb219, %bb196
%tmp220 = phi i64 [ %tmp240, %bb219 ], [ 0, %bb196 ]
%tmp221 = trunc i64 %tmp220 to i32
%tmp222 = add i32 %tmp221, 84
%tmp223 = urem i32 %tmp222, 101
%tmp224 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp14, i64 0, i64 0, i64 %tmp220
store i32 %tmp223, ptr %tmp224, align 16
%tmp225 = or i64 %tmp220, 1
%tmp226 = trunc i64 %tmp225 to i32
%tmp227 = sub i32 84, %tmp226
%tmp228 = urem i32 %tmp227, 101
%tmp229 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp14, i64 0, i64 0, i64 %tmp225
store i32 %tmp228, ptr %tmp229, align 4
%tmp230 = or i64 %tmp220, 2
%tmp231 = trunc i64 %tmp230 to i32
%tmp232 = add i32 %tmp231, 84
%tmp233 = urem i32 %tmp232, 101
%tmp234 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp14, i64 0, i64 0, i64 %tmp230
store i32 %tmp233, ptr %tmp234, align 8
%tmp235 = or i64 %tmp220, 3
%tmp236 = trunc i64 %tmp235 to i32
%tmp237 = sub i32 84, %tmp236
%tmp238 = urem i32 %tmp237, 101
%tmp239 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp14, i64 0, i64 0, i64 %tmp235
store i32 %tmp238, ptr %tmp239, align 4
%tmp240 = add nuw nsw i64 %tmp220, 4
%tmp241 = icmp eq i64 %tmp240, 10000
br i1 %tmp241, label %bb242, label %bb219
bb242: ; preds = %bb242, %bb219
%tmp243 = phi i64 [ %tmp263, %bb242 ], [ 0, %bb219 ]
%tmp244 = trunc i64 %tmp243 to i32
%tmp245 = add i32 %tmp244, 94
%tmp246 = urem i32 %tmp245, 101
%tmp247 = getelementptr inbounds [100 x i32], ptr %tmp15, i64 0, i64 %tmp243
store i32 %tmp246, ptr %tmp247, align 16
%tmp248 = or i64 %tmp243, 1
%tmp249 = trunc i64 %tmp248 to i32
%tmp250 = sub i32 94, %tmp249
%tmp251 = urem i32 %tmp250, 101
%tmp252 = getelementptr inbounds [100 x i32], ptr %tmp15, i64 0, i64 %tmp248
store i32 %tmp251, ptr %tmp252, align 4
%tmp253 = or i64 %tmp243, 2
%tmp254 = trunc i64 %tmp253 to i32
%tmp255 = add i32 %tmp254, 94
%tmp256 = urem i32 %tmp255, 101
%tmp257 = getelementptr inbounds [100 x i32], ptr %tmp15, i64 0, i64 %tmp253
store i32 %tmp256, ptr %tmp257, align 8
%tmp258 = or i64 %tmp243, 3
%tmp259 = trunc i64 %tmp258 to i32
%tmp260 = sub i32 94, %tmp259
%tmp261 = urem i32 %tmp260, 101
%tmp262 = getelementptr inbounds [100 x i32], ptr %tmp15, i64 0, i64 %tmp258
store i32 %tmp261, ptr %tmp262, align 4
%tmp263 = add nuw nsw i64 %tmp243, 4
%tmp264 = icmp eq i64 %tmp263, 100
br i1 %tmp264, label %bb265, label %bb242
bb265: ; preds = %bb265, %bb242
%tmp266 = phi i64 [ %tmp286, %bb265 ], [ 0, %bb242 ]
%tmp267 = trunc i64 %tmp266 to i32
%tmp268 = add i32 %tmp267, 92
%tmp269 = urem i32 %tmp268, 101
%tmp270 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp16, i64 0, i64 0, i64 %tmp266
store i32 %tmp269, ptr %tmp270, align 16
%tmp271 = or i64 %tmp266, 1
%tmp272 = trunc i64 %tmp271 to i32
%tmp273 = sub i32 92, %tmp272
%tmp274 = urem i32 %tmp273, 101
%tmp275 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp16, i64 0, i64 0, i64 %tmp271
store i32 %tmp274, ptr %tmp275, align 4
%tmp276 = or i64 %tmp266, 2
%tmp277 = trunc i64 %tmp276 to i32
%tmp278 = add i32 %tmp277, 92
%tmp279 = urem i32 %tmp278, 101
%tmp280 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp16, i64 0, i64 0, i64 %tmp276
store i32 %tmp279, ptr %tmp280, align 8
%tmp281 = or i64 %tmp266, 3
%tmp282 = trunc i64 %tmp281 to i32
%tmp283 = sub i32 92, %tmp282
%tmp284 = urem i32 %tmp283, 101
%tmp285 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp16, i64 0, i64 0, i64 %tmp281
store i32 %tmp284, ptr %tmp285, align 4
%tmp286 = add nuw nsw i64 %tmp266, 4
%tmp287 = icmp eq i64 %tmp286, 10000
br i1 %tmp287, label %bb288, label %bb265
bb288: ; preds = %bb288, %bb265
%tmp289 = phi i64 [ %tmp309, %bb288 ], [ 0, %bb265 ]
%tmp290 = trunc i64 %tmp289 to i32
%tmp291 = add i32 %tmp290, 87
%tmp292 = urem i32 %tmp291, 101
%tmp293 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp17, i64 0, i64 0, i64 %tmp289
store i32 %tmp292, ptr %tmp293, align 16
%tmp294 = or i64 %tmp289, 1
%tmp295 = trunc i64 %tmp294 to i32
%tmp296 = sub i32 87, %tmp295
%tmp297 = urem i32 %tmp296, 101
%tmp298 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp17, i64 0, i64 0, i64 %tmp294
store i32 %tmp297, ptr %tmp298, align 4
%tmp299 = or i64 %tmp289, 2
%tmp300 = trunc i64 %tmp299 to i32
%tmp301 = add i32 %tmp300, 87
%tmp302 = urem i32 %tmp301, 101
%tmp303 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp17, i64 0, i64 0, i64 %tmp299
store i32 %tmp302, ptr %tmp303, align 8
%tmp304 = or i64 %tmp289, 3
%tmp305 = trunc i64 %tmp304 to i32
%tmp306 = sub i32 87, %tmp305
%tmp307 = urem i32 %tmp306, 101
%tmp308 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp17, i64 0, i64 0, i64 %tmp304
store i32 %tmp307, ptr %tmp308, align 4
%tmp309 = add nuw nsw i64 %tmp289, 4
%tmp310 = icmp eq i64 %tmp309, 10000
br i1 %tmp310, label %bb311, label %bb288
bb311: ; preds = %bb311, %bb288
%tmp312 = phi i64 [ %tmp332, %bb311 ], [ 0, %bb288 ]
%tmp313 = trunc i64 %tmp312 to i32
%tmp314 = add i32 %tmp313, 28
%tmp315 = urem i32 %tmp314, 101
%tmp316 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp18, i64 0, i64 0, i64 %tmp312
store i32 %tmp315, ptr %tmp316, align 16
%tmp317 = or i64 %tmp312, 1
%tmp318 = trunc i64 %tmp317 to i32
%tmp319 = sub i32 28, %tmp318
%tmp320 = urem i32 %tmp319, 101
%tmp321 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp18, i64 0, i64 0, i64 %tmp317
store i32 %tmp320, ptr %tmp321, align 4
%tmp322 = or i64 %tmp312, 2
%tmp323 = trunc i64 %tmp322 to i32
%tmp324 = add i32 %tmp323, 28
%tmp325 = urem i32 %tmp324, 101
%tmp326 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp18, i64 0, i64 0, i64 %tmp322
store i32 %tmp325, ptr %tmp326, align 8
%tmp327 = or i64 %tmp312, 3
%tmp328 = trunc i64 %tmp327 to i32
%tmp329 = sub i32 28, %tmp328
%tmp330 = urem i32 %tmp329, 101
%tmp331 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp18, i64 0, i64 0, i64 %tmp327
store i32 %tmp330, ptr %tmp331, align 4
%tmp332 = add nuw nsw i64 %tmp312, 4
%tmp333 = icmp eq i64 %tmp332, 10000
br i1 %tmp333, label %bb334, label %bb311
bb334: ; preds = %bb311
%tmp335 = sub i32 87, %arg
%tmp336 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 69
%tmp337 = load i32, ptr %tmp336, align 4
%tmp338 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 68
%tmp339 = load i32, ptr %tmp338, align 16
br label %bb340
bb340: ; preds = %bb340, %bb334
%tmp341 = phi i32 [ %tmp339, %bb334 ], [ %tmp373, %bb340 ]
%tmp342 = phi i32 [ %tmp337, %bb334 ], [ %tmp379, %bb340 ]
%tmp343 = phi i64 [ 68, %bb334 ], [ %tmp371, %bb340 ]
%tmp344 = phi i32 [ %tmp335, %bb334 ], [ %tmp382, %bb340 ]
%tmp345 = phi i32 [ %arg2, %bb334 ], [ %tmp380, %bb340 ]
%tmp346 = add nsw i64 %tmp343, -1
%tmp347 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp346
%tmp348 = load i32, ptr %tmp347, align 4
%tmp349 = add nuw nsw i64 %tmp343, 1
%tmp350 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp349
%tmp351 = sub i32 %tmp342, %tmp348
store i32 %tmp351, ptr %tmp350, align 4
%tmp352 = getelementptr inbounds [100 x i32], ptr %tmp7, i64 0, i64 %tmp343
%tmp353 = load i32, ptr %tmp352, align 4
%tmp354 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp343
%tmp355 = add i32 %tmp341, %tmp353
store i32 %tmp355, ptr %tmp354, align 4
%tmp356 = add i32 %tmp345, -1
%tmp357 = sub i32 %tmp344, %tmp345
%tmp358 = sub i32 %tmp357, %tmp351
%tmp359 = add nsw i64 %tmp343, -2
%tmp360 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp359
%tmp361 = load i32, ptr %tmp360, align 4
%tmp362 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp343
%tmp363 = sub i32 %tmp355, %tmp361
store i32 %tmp363, ptr %tmp362, align 4
%tmp364 = getelementptr inbounds [100 x i32], ptr %tmp7, i64 0, i64 %tmp346
%tmp365 = load i32, ptr %tmp364, align 4
%tmp366 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp346
%tmp367 = add i32 %tmp348, %tmp365
store i32 %tmp367, ptr %tmp366, align 4
%tmp368 = add i32 %tmp345, -2
%tmp369 = sub i32 %tmp358, %tmp356
%tmp370 = sub i32 %tmp369, %tmp363
%tmp371 = add nsw i64 %tmp343, -3
%tmp372 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp371
%tmp373 = load i32, ptr %tmp372, align 4
%tmp374 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp346
%tmp375 = sub i32 %tmp367, %tmp373
store i32 %tmp375, ptr %tmp374, align 4
%tmp376 = getelementptr inbounds [100 x i32], ptr %tmp7, i64 0, i64 %tmp359
%tmp377 = load i32, ptr %tmp376, align 4
%tmp378 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp359
%tmp379 = add i32 %tmp361, %tmp377
store i32 %tmp379, ptr %tmp378, align 4
%tmp380 = add i32 %tmp345, -3
%tmp381 = sub i32 %tmp370, %tmp368
%tmp382 = sub i32 %tmp381, %tmp375
%tmp383 = icmp ugt i64 %tmp371, 2
br i1 %tmp383, label %bb340, label %bb384
bb384: ; preds = %bb340
%tmp385 = add i32 %arg2, -66
%tmp386 = getelementptr inbounds [100 x i32], ptr %tmp7, i64 0, i64 52
%tmp387 = load i32, ptr %tmp386, align 16
store i32 %tmp387, ptr %tmp32, align 4
%tmp388 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 97
%tmp389 = load i32, ptr %tmp388, align 4
%tmp390 = getelementptr inbounds [100 x i32], ptr %tmp8, i64 0, i64 31
%tmp391 = load i32, ptr %tmp390, align 4
%tmp392 = icmp eq i32 %tmp389, %tmp391
br i1 %tmp392, label %bb478, label %bb393
bb393: ; preds = %bb384
%tmp394 = sub i32 -79, %tmp382
%tmp395 = getelementptr inbounds [100 x i32], ptr %tmp12, i64 0, i64 2
%tmp397 = getelementptr inbounds [100 x i32], ptr %tmp13, i64 0, i64 2
call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %tmp395, ptr nonnull align 8 %tmp397, i64 304, i1 false)
br label %bb399
bb399: ; preds = %bb424, %bb393
%tmp400 = phi i64 [ 77, %bb393 ], [ %tmp425, %bb424 ]
br label %bb403
bb401: ; preds = %bb424
%tmp402 = add i32 %arg2, 3
br label %bb433
bb403: ; preds = %bb403, %bb399
%tmp404 = phi i64 [ 1, %bb399 ], [ %tmp414, %bb403 ]
%tmp405 = add nuw nsw i64 %tmp404, 1
%tmp406 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp9, i64 0, i64 %tmp404, i64 %tmp405
%tmp407 = load i32, ptr %tmp406, align 4
%tmp408 = add i32 %tmp394, %tmp407
store i32 %tmp408, ptr %tmp406, align 4
%tmp409 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp11, i64 0, i64 %tmp404, i64 %tmp405
%tmp410 = load i32, ptr %tmp409, align 4
%tmp411 = getelementptr inbounds [100 x i32], ptr %tmp10, i64 0, i64 %tmp405
%tmp412 = load i32, ptr %tmp411, align 4
%tmp413 = add i32 %tmp412, %tmp410
store i32 %tmp413, ptr %tmp411, align 4
%tmp414 = add nuw nsw i64 %tmp404, 2
%tmp415 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp9, i64 0, i64 %tmp405, i64 %tmp414
%tmp416 = load i32, ptr %tmp415, align 4
%tmp417 = add i32 %tmp394, %tmp416
store i32 %tmp417, ptr %tmp415, align 4
%tmp418 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp11, i64 0, i64 %tmp405, i64 %tmp414
%tmp419 = load i32, ptr %tmp418, align 4
%tmp420 = getelementptr inbounds [100 x i32], ptr %tmp10, i64 0, i64 %tmp414
%tmp421 = load i32, ptr %tmp420, align 4
%tmp422 = add i32 %tmp421, %tmp419
store i32 %tmp422, ptr %tmp420, align 4
%tmp423 = icmp eq i64 %tmp414, 47
br i1 %tmp423, label %bb424, label %bb403
bb424: ; preds = %bb403
%tmp425 = add nsw i64 %tmp400, -1
%tmp426 = getelementptr inbounds [100 x i32], ptr %tmp8, i64 0, i64 %tmp425
%tmp427 = load i32, ptr %tmp426, align 4
%tmp428 = add i32 %tmp427, 2
%tmp429 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp425
%tmp430 = load i32, ptr %tmp429, align 4
%tmp431 = mul i32 %tmp430, %tmp428
store i32 %tmp431, ptr %tmp429, align 4
%tmp432 = icmp ugt i64 %tmp425, 1
br i1 %tmp432, label %bb399, label %bb401
bb433: ; preds = %bb475, %bb401
%tmp434 = phi i64 [ 2, %bb401 ], [ %tmp437, %bb475 ]
%tmp435 = phi i32 [ 2, %bb401 ], [ %tmp476, %bb475 ]
%tmp436 = add nsw i64 %tmp434, -1
%tmp437 = add nuw nsw i64 %tmp434, 1
%tmp438 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp14, i64 0, i64 %tmp437, i64 %tmp434
%tmp439 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp17, i64 0, i64 %tmp436, i64 %tmp437
%tmp440 = mul i32 %tmp435, 47
br label %bb441
bb441: ; preds = %bb473, %bb433
%tmp442 = phi i64 [ 1, %bb433 ], [ %tmp450, %bb473 ]
%tmp443 = getelementptr inbounds [100 x i32], ptr %tmp8, i64 0, i64 %tmp442
%tmp444 = load i32, ptr %tmp443, align 4
%tmp445 = add nsw i64 %tmp442, -1
%tmp446 = getelementptr inbounds [100 x i32], ptr %tmp13, i64 0, i64 %tmp445
%tmp447 = load i32, ptr %tmp446, align 4
%tmp448 = xor i32 %tmp444, -1
%tmp449 = add i32 %tmp447, %tmp448
store i32 %tmp449, ptr %tmp446, align 4
%tmp450 = add nuw nsw i64 %tmp442, 1
%tmp451 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp14, i64 0, i64 %tmp436, i64 %tmp450
%tmp452 = load i32, ptr %tmp451, align 4
%tmp453 = mul i32 %tmp452, 91
%tmp454 = icmp eq i32 %tmp453, -30
br i1 %tmp454, label %bb455, label %bb473
bb455: ; preds = %bb441
%tmp456 = getelementptr inbounds [100 x i32], ptr %tmp15, i64 0, i64 %tmp442
%tmp457 = load i32, ptr %tmp456, align 4
%tmp458 = icmp ugt i32 %tmp457, %tmp402
br i1 %tmp458, label %bb459, label %bb473
bb459: ; preds = %bb455
%tmp460 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp16, i64 0, i64 %tmp445, i64 %tmp436
store i32 %tmp387, ptr %tmp460, align 4
%tmp461 = load i32, ptr %tmp57, align 4
%tmp462 = load i32, ptr %tmp438, align 4
%tmp463 = add i32 %tmp462, %tmp461
%tmp464 = load i32, ptr %tmp439, align 4
%tmp465 = add i32 %tmp464, 68
%tmp466 = icmp eq i32 %tmp463, %tmp465
br i1 %tmp466, label %bb471, label %bb467
bb467: ; preds = %bb459
%tmp468 = getelementptr inbounds [100 x i32], ptr %tmp10, i64 0, i64 %tmp450
%tmp469 = load i32, ptr %tmp468, align 4
%tmp470 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp445
store i32 %tmp469, ptr %tmp470, align 4
br label %bb473
bb471: ; preds = %bb459
%tmp472 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp18, i64 0, i64 %tmp437, i64 %tmp445
store i32 %tmp440, ptr %tmp472, align 4
br label %bb473
bb473: ; preds = %bb471, %bb467, %bb455, %bb441
%tmp474 = icmp eq i64 %tmp450, 13
br i1 %tmp474, label %bb475, label %bb441
bb475: ; preds = %bb473
%tmp476 = add nuw nsw i32 %tmp435, 1
%tmp477 = icmp eq i64 %tmp437, 69
br i1 %tmp477, label %bb478, label %bb433
bb478: ; preds = %bb475, %bb384
br label %bb479
bb479: ; preds = %bb479, %bb478
%tmp480 = phi i64 [ 0, %bb478 ], [ %tmp521, %bb479 ]
%tmp481 = phi i32 [ 0, %bb478 ], [ %tmp520, %bb479 ]
%tmp482 = and i64 %tmp480, 1
%tmp483 = icmp eq i64 %tmp482, 0
%tmp484 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp480
%tmp485 = load i32, ptr %tmp484, align 4
%tmp486 = sub i32 0, %tmp485
%tmp487 = select i1 %tmp483, i32 %tmp485, i32 %tmp486
%tmp488 = add i32 %tmp487, %tmp481
%tmp489 = add nuw nsw i64 %tmp480, 1
%tmp490 = and i64 %tmp489, 1
%tmp491 = icmp eq i64 %tmp490, 0
%tmp492 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp489
%tmp493 = load i32, ptr %tmp492, align 4
%tmp494 = sub i32 0, %tmp493
%tmp495 = select i1 %tmp491, i32 %tmp493, i32 %tmp494
%tmp496 = add i32 %tmp495, %tmp488
%tmp497 = add nuw nsw i64 %tmp480, 2
%tmp498 = and i64 %tmp497, 1
%tmp499 = icmp eq i64 %tmp498, 0
%tmp500 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp497
%tmp501 = load i32, ptr %tmp500, align 4
%tmp502 = sub i32 0, %tmp501
%tmp503 = select i1 %tmp499, i32 %tmp501, i32 %tmp502
%tmp504 = add i32 %tmp503, %tmp496
%tmp505 = add nuw nsw i64 %tmp480, 3
%tmp506 = and i64 %tmp505, 1
%tmp507 = icmp eq i64 %tmp506, 0
%tmp508 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp505
%tmp509 = load i32, ptr %tmp508, align 4
%tmp510 = sub i32 0, %tmp509
%tmp511 = select i1 %tmp507, i32 %tmp509, i32 %tmp510
%tmp512 = add i32 %tmp511, %tmp504
%tmp513 = add nuw nsw i64 %tmp480, 4
%tmp514 = and i64 %tmp513, 1
%tmp515 = icmp eq i64 %tmp514, 0
%tmp516 = getelementptr inbounds [100 x i32], ptr %tmp, i64 0, i64 %tmp513
%tmp517 = load i32, ptr %tmp516, align 4
%tmp518 = sub i32 0, %tmp517
%tmp519 = select i1 %tmp515, i32 %tmp517, i32 %tmp518
%tmp520 = add i32 %tmp519, %tmp512
%tmp521 = add nuw nsw i64 %tmp480, 5
%tmp522 = icmp eq i64 %tmp521, 100
br i1 %tmp522, label %bb523, label %bb479
bb523: ; preds = %bb523, %bb479
%tmp524 = phi i64 [ %tmp565, %bb523 ], [ 0, %bb479 ]
%tmp525 = phi i32 [ %tmp564, %bb523 ], [ 0, %bb479 ]
%tmp526 = and i64 %tmp524, 1
%tmp527 = icmp eq i64 %tmp526, 0
%tmp528 = getelementptr inbounds [100 x i32], ptr %tmp7, i64 0, i64 %tmp524
%tmp529 = load i32, ptr %tmp528, align 4
%tmp530 = sub i32 0, %tmp529
%tmp531 = select i1 %tmp527, i32 %tmp529, i32 %tmp530
%tmp532 = add i32 %tmp531, %tmp525
%tmp533 = add nuw nsw i64 %tmp524, 1
%tmp534 = and i64 %tmp533, 1
%tmp535 = icmp eq i64 %tmp534, 0
%tmp536 = getelementptr inbounds [100 x i32], ptr %tmp7, i64 0, i64 %tmp533
%tmp537 = load i32, ptr %tmp536, align 4
%tmp538 = sub i32 0, %tmp537
%tmp539 = select i1 %tmp535, i32 %tmp537, i32 %tmp538
%tmp540 = add i32 %tmp539, %tmp532
%tmp541 = add nuw nsw i64 %tmp524, 2
%tmp542 = and i64 %tmp541, 1
%tmp543 = icmp eq i64 %tmp542, 0
%tmp544 = getelementptr inbounds [100 x i32], ptr %tmp7, i64 0, i64 %tmp541
%tmp545 = load i32, ptr %tmp544, align 4
%tmp546 = sub i32 0, %tmp545
%tmp547 = select i1 %tmp543, i32 %tmp545, i32 %tmp546
%tmp548 = add i32 %tmp547, %tmp540
%tmp549 = add nuw nsw i64 %tmp524, 3
%tmp550 = and i64 %tmp549, 1
%tmp551 = icmp eq i64 %tmp550, 0
%tmp552 = getelementptr inbounds [100 x i32], ptr %tmp7, i64 0, i64 %tmp549
%tmp553 = load i32, ptr %tmp552, align 4
%tmp554 = sub i32 0, %tmp553
%tmp555 = select i1 %tmp551, i32 %tmp553, i32 %tmp554
%tmp556 = add i32 %tmp555, %tmp548
%tmp557 = add nuw nsw i64 %tmp524, 4
%tmp558 = and i64 %tmp557, 1
%tmp559 = icmp eq i64 %tmp558, 0
%tmp560 = getelementptr inbounds [100 x i32], ptr %tmp7, i64 0, i64 %tmp557
%tmp561 = load i32, ptr %tmp560, align 4
%tmp562 = sub i32 0, %tmp561
%tmp563 = select i1 %tmp559, i32 %tmp561, i32 %tmp562
%tmp564 = add i32 %tmp563, %tmp556
%tmp565 = add nuw nsw i64 %tmp524, 5
%tmp566 = icmp eq i64 %tmp565, 100
br i1 %tmp566, label %bb567, label %bb523
bb567: ; preds = %bb567, %bb523
%tmp568 = phi i64 [ %tmp609, %bb567 ], [ 0, %bb523 ]
%tmp569 = phi i32 [ %tmp608, %bb567 ], [ 0, %bb523 ]
%tmp570 = and i64 %tmp568, 1
%tmp571 = icmp eq i64 %tmp570, 0
%tmp572 = getelementptr inbounds [100 x i32], ptr %tmp8, i64 0, i64 %tmp568
%tmp573 = load i32, ptr %tmp572, align 4
%tmp574 = sub i32 0, %tmp573
%tmp575 = select i1 %tmp571, i32 %tmp573, i32 %tmp574
%tmp576 = add i32 %tmp575, %tmp569
%tmp577 = add nuw nsw i64 %tmp568, 1
%tmp578 = and i64 %tmp577, 1
%tmp579 = icmp eq i64 %tmp578, 0
%tmp580 = getelementptr inbounds [100 x i32], ptr %tmp8, i64 0, i64 %tmp577
%tmp581 = load i32, ptr %tmp580, align 4
%tmp582 = sub i32 0, %tmp581
%tmp583 = select i1 %tmp579, i32 %tmp581, i32 %tmp582
%tmp584 = add i32 %tmp583, %tmp576
%tmp585 = add nuw nsw i64 %tmp568, 2
%tmp586 = and i64 %tmp585, 1
%tmp587 = icmp eq i64 %tmp586, 0
%tmp588 = getelementptr inbounds [100 x i32], ptr %tmp8, i64 0, i64 %tmp585
%tmp589 = load i32, ptr %tmp588, align 4
%tmp590 = sub i32 0, %tmp589
%tmp591 = select i1 %tmp587, i32 %tmp589, i32 %tmp590
%tmp592 = add i32 %tmp591, %tmp584
%tmp593 = add nuw nsw i64 %tmp568, 3
%tmp594 = and i64 %tmp593, 1
%tmp595 = icmp eq i64 %tmp594, 0
%tmp596 = getelementptr inbounds [100 x i32], ptr %tmp8, i64 0, i64 %tmp593
%tmp597 = load i32, ptr %tmp596, align 4
%tmp598 = sub i32 0, %tmp597
%tmp599 = select i1 %tmp595, i32 %tmp597, i32 %tmp598
%tmp600 = add i32 %tmp599, %tmp592
%tmp601 = add nuw nsw i64 %tmp568, 4
%tmp602 = and i64 %tmp601, 1
%tmp603 = icmp eq i64 %tmp602, 0
%tmp604 = getelementptr inbounds [100 x i32], ptr %tmp8, i64 0, i64 %tmp601
%tmp605 = load i32, ptr %tmp604, align 4
%tmp606 = sub i32 0, %tmp605
%tmp607 = select i1 %tmp603, i32 %tmp605, i32 %tmp606
%tmp608 = add i32 %tmp607, %tmp600
%tmp609 = add nuw nsw i64 %tmp568, 5
%tmp610 = icmp eq i64 %tmp609, 100
br i1 %tmp610, label %bb611, label %bb567
bb611: ; preds = %bb611, %bb567
%tmp612 = phi i64 [ %tmp653, %bb611 ], [ 0, %bb567 ]
%tmp613 = phi i32 [ %tmp652, %bb611 ], [ 0, %bb567 ]
%tmp614 = and i64 %tmp612, 1
%tmp615 = icmp eq i64 %tmp614, 0
%tmp616 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp9, i64 0, i64 0, i64 %tmp612
%tmp617 = load i32, ptr %tmp616, align 4
%tmp618 = sub i32 0, %tmp617
%tmp619 = select i1 %tmp615, i32 %tmp617, i32 %tmp618
%tmp620 = add i32 %tmp619, %tmp613
%tmp621 = add nuw nsw i64 %tmp612, 1
%tmp622 = and i64 %tmp621, 1
%tmp623 = icmp eq i64 %tmp622, 0
%tmp624 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp9, i64 0, i64 0, i64 %tmp621
%tmp625 = load i32, ptr %tmp624, align 4
%tmp626 = sub i32 0, %tmp625
%tmp627 = select i1 %tmp623, i32 %tmp625, i32 %tmp626
%tmp628 = add i32 %tmp627, %tmp620
%tmp629 = add nuw nsw i64 %tmp612, 2
%tmp630 = and i64 %tmp629, 1
%tmp631 = icmp eq i64 %tmp630, 0
%tmp632 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp9, i64 0, i64 0, i64 %tmp629
%tmp633 = load i32, ptr %tmp632, align 4
%tmp634 = sub i32 0, %tmp633
%tmp635 = select i1 %tmp631, i32 %tmp633, i32 %tmp634
%tmp636 = add i32 %tmp635, %tmp628
%tmp637 = add nuw nsw i64 %tmp612, 3
%tmp638 = and i64 %tmp637, 1
%tmp639 = icmp eq i64 %tmp638, 0
%tmp640 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp9, i64 0, i64 0, i64 %tmp637
%tmp641 = load i32, ptr %tmp640, align 4
%tmp642 = sub i32 0, %tmp641
%tmp643 = select i1 %tmp639, i32 %tmp641, i32 %tmp642
%tmp644 = add i32 %tmp643, %tmp636
%tmp645 = add nuw nsw i64 %tmp612, 4
%tmp646 = and i64 %tmp645, 1
%tmp647 = icmp eq i64 %tmp646, 0
%tmp648 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp9, i64 0, i64 0, i64 %tmp645
%tmp649 = load i32, ptr %tmp648, align 4
%tmp650 = sub i32 0, %tmp649
%tmp651 = select i1 %tmp647, i32 %tmp649, i32 %tmp650
%tmp652 = add i32 %tmp651, %tmp644
%tmp653 = add nuw nsw i64 %tmp612, 5
%tmp654 = icmp eq i64 %tmp653, 10000
br i1 %tmp654, label %bb655, label %bb611
bb655: ; preds = %bb655, %bb611
%tmp656 = phi i64 [ %tmp697, %bb655 ], [ 0, %bb611 ]
%tmp657 = phi i32 [ %tmp696, %bb655 ], [ 0, %bb611 ]
%tmp658 = and i64 %tmp656, 1
%tmp659 = icmp eq i64 %tmp658, 0
%tmp660 = getelementptr inbounds [100 x i32], ptr %tmp10, i64 0, i64 %tmp656
%tmp661 = load i32, ptr %tmp660, align 4
%tmp662 = sub i32 0, %tmp661
%tmp663 = select i1 %tmp659, i32 %tmp661, i32 %tmp662
%tmp664 = add i32 %tmp663, %tmp657
%tmp665 = add nuw nsw i64 %tmp656, 1
%tmp666 = and i64 %tmp665, 1
%tmp667 = icmp eq i64 %tmp666, 0
%tmp668 = getelementptr inbounds [100 x i32], ptr %tmp10, i64 0, i64 %tmp665
%tmp669 = load i32, ptr %tmp668, align 4
%tmp670 = sub i32 0, %tmp669
%tmp671 = select i1 %tmp667, i32 %tmp669, i32 %tmp670
%tmp672 = add i32 %tmp671, %tmp664
%tmp673 = add nuw nsw i64 %tmp656, 2
%tmp674 = and i64 %tmp673, 1
%tmp675 = icmp eq i64 %tmp674, 0
%tmp676 = getelementptr inbounds [100 x i32], ptr %tmp10, i64 0, i64 %tmp673
%tmp677 = load i32, ptr %tmp676, align 4
%tmp678 = sub i32 0, %tmp677
%tmp679 = select i1 %tmp675, i32 %tmp677, i32 %tmp678
%tmp680 = add i32 %tmp679, %tmp672
%tmp681 = add nuw nsw i64 %tmp656, 3
%tmp682 = and i64 %tmp681, 1
%tmp683 = icmp eq i64 %tmp682, 0
%tmp684 = getelementptr inbounds [100 x i32], ptr %tmp10, i64 0, i64 %tmp681
%tmp685 = load i32, ptr %tmp684, align 4
%tmp686 = sub i32 0, %tmp685
%tmp687 = select i1 %tmp683, i32 %tmp685, i32 %tmp686
%tmp688 = add i32 %tmp687, %tmp680
%tmp689 = add nuw nsw i64 %tmp656, 4
%tmp690 = and i64 %tmp689, 1
%tmp691 = icmp eq i64 %tmp690, 0
%tmp692 = getelementptr inbounds [100 x i32], ptr %tmp10, i64 0, i64 %tmp689
%tmp693 = load i32, ptr %tmp692, align 4
%tmp694 = sub i32 0, %tmp693
%tmp695 = select i1 %tmp691, i32 %tmp693, i32 %tmp694
%tmp696 = add i32 %tmp695, %tmp688
%tmp697 = add nuw nsw i64 %tmp656, 5
%tmp698 = icmp eq i64 %tmp697, 100
br i1 %tmp698, label %bb699, label %bb655
bb699: ; preds = %bb699, %bb655
%tmp700 = phi i64 [ %tmp741, %bb699 ], [ 0, %bb655 ]
%tmp701 = phi i32 [ %tmp740, %bb699 ], [ 0, %bb655 ]
%tmp702 = and i64 %tmp700, 1
%tmp703 = icmp eq i64 %tmp702, 0
%tmp704 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp11, i64 0, i64 0, i64 %tmp700
%tmp705 = load i32, ptr %tmp704, align 4
%tmp706 = sub i32 0, %tmp705
%tmp707 = select i1 %tmp703, i32 %tmp705, i32 %tmp706
%tmp708 = add i32 %tmp707, %tmp701
%tmp709 = add nuw nsw i64 %tmp700, 1
%tmp710 = and i64 %tmp709, 1
%tmp711 = icmp eq i64 %tmp710, 0
%tmp712 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp11, i64 0, i64 0, i64 %tmp709
%tmp713 = load i32, ptr %tmp712, align 4
%tmp714 = sub i32 0, %tmp713
%tmp715 = select i1 %tmp711, i32 %tmp713, i32 %tmp714
%tmp716 = add i32 %tmp715, %tmp708
%tmp717 = add nuw nsw i64 %tmp700, 2
%tmp718 = and i64 %tmp717, 1
%tmp719 = icmp eq i64 %tmp718, 0
%tmp720 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp11, i64 0, i64 0, i64 %tmp717
%tmp721 = load i32, ptr %tmp720, align 4
%tmp722 = sub i32 0, %tmp721
%tmp723 = select i1 %tmp719, i32 %tmp721, i32 %tmp722
%tmp724 = add i32 %tmp723, %tmp716
%tmp725 = add nuw nsw i64 %tmp700, 3
%tmp726 = and i64 %tmp725, 1
%tmp727 = icmp eq i64 %tmp726, 0
%tmp728 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp11, i64 0, i64 0, i64 %tmp725
%tmp729 = load i32, ptr %tmp728, align 4
%tmp730 = sub i32 0, %tmp729
%tmp731 = select i1 %tmp727, i32 %tmp729, i32 %tmp730
%tmp732 = add i32 %tmp731, %tmp724
%tmp733 = add nuw nsw i64 %tmp700, 4
%tmp734 = and i64 %tmp733, 1
%tmp735 = icmp eq i64 %tmp734, 0
%tmp736 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp11, i64 0, i64 0, i64 %tmp733
%tmp737 = load i32, ptr %tmp736, align 4
%tmp738 = sub i32 0, %tmp737
%tmp739 = select i1 %tmp735, i32 %tmp737, i32 %tmp738
%tmp740 = add i32 %tmp739, %tmp732
%tmp741 = add nuw nsw i64 %tmp700, 5
%tmp742 = icmp eq i64 %tmp741, 10000
br i1 %tmp742, label %bb743, label %bb699
bb743: ; preds = %bb743, %bb699
%tmp744 = phi i64 [ %tmp785, %bb743 ], [ 0, %bb699 ]
%tmp745 = phi i32 [ %tmp784, %bb743 ], [ 0, %bb699 ]
%tmp746 = and i64 %tmp744, 1
%tmp747 = icmp eq i64 %tmp746, 0
%tmp748 = getelementptr inbounds [100 x i32], ptr %tmp12, i64 0, i64 %tmp744
%tmp749 = load i32, ptr %tmp748, align 4
%tmp750 = sub i32 0, %tmp749
%tmp751 = select i1 %tmp747, i32 %tmp749, i32 %tmp750
%tmp752 = add i32 %tmp751, %tmp745
%tmp753 = add nuw nsw i64 %tmp744, 1
%tmp754 = and i64 %tmp753, 1
%tmp755 = icmp eq i64 %tmp754, 0
%tmp756 = getelementptr inbounds [100 x i32], ptr %tmp12, i64 0, i64 %tmp753
%tmp757 = load i32, ptr %tmp756, align 4
%tmp758 = sub i32 0, %tmp757
%tmp759 = select i1 %tmp755, i32 %tmp757, i32 %tmp758
%tmp760 = add i32 %tmp759, %tmp752
%tmp761 = add nuw nsw i64 %tmp744, 2
%tmp762 = and i64 %tmp761, 1
%tmp763 = icmp eq i64 %tmp762, 0
%tmp764 = getelementptr inbounds [100 x i32], ptr %tmp12, i64 0, i64 %tmp761
%tmp765 = load i32, ptr %tmp764, align 4
%tmp766 = sub i32 0, %tmp765
%tmp767 = select i1 %tmp763, i32 %tmp765, i32 %tmp766
%tmp768 = add i32 %tmp767, %tmp760
%tmp769 = add nuw nsw i64 %tmp744, 3
%tmp770 = and i64 %tmp769, 1
%tmp771 = icmp eq i64 %tmp770, 0
%tmp772 = getelementptr inbounds [100 x i32], ptr %tmp12, i64 0, i64 %tmp769
%tmp773 = load i32, ptr %tmp772, align 4
%tmp774 = sub i32 0, %tmp773
%tmp775 = select i1 %tmp771, i32 %tmp773, i32 %tmp774
%tmp776 = add i32 %tmp775, %tmp768
%tmp777 = add nuw nsw i64 %tmp744, 4
%tmp778 = and i64 %tmp777, 1
%tmp779 = icmp eq i64 %tmp778, 0
%tmp780 = getelementptr inbounds [100 x i32], ptr %tmp12, i64 0, i64 %tmp777
%tmp781 = load i32, ptr %tmp780, align 4
%tmp782 = sub i32 0, %tmp781
%tmp783 = select i1 %tmp779, i32 %tmp781, i32 %tmp782
%tmp784 = add i32 %tmp783, %tmp776
%tmp785 = add nuw nsw i64 %tmp744, 5
%tmp786 = icmp eq i64 %tmp785, 100
br i1 %tmp786, label %bb787, label %bb743
bb787: ; preds = %bb787, %bb743
%tmp788 = phi i64 [ %tmp829, %bb787 ], [ 0, %bb743 ]
%tmp789 = phi i32 [ %tmp828, %bb787 ], [ 0, %bb743 ]
%tmp790 = and i64 %tmp788, 1
%tmp791 = icmp eq i64 %tmp790, 0
%tmp792 = getelementptr inbounds [100 x i32], ptr %tmp13, i64 0, i64 %tmp788
%tmp793 = load i32, ptr %tmp792, align 4
%tmp794 = sub i32 0, %tmp793
%tmp795 = select i1 %tmp791, i32 %tmp793, i32 %tmp794
%tmp796 = add i32 %tmp795, %tmp789
%tmp797 = add nuw nsw i64 %tmp788, 1
%tmp798 = and i64 %tmp797, 1
%tmp799 = icmp eq i64 %tmp798, 0
%tmp800 = getelementptr inbounds [100 x i32], ptr %tmp13, i64 0, i64 %tmp797
%tmp801 = load i32, ptr %tmp800, align 4
%tmp802 = sub i32 0, %tmp801
%tmp803 = select i1 %tmp799, i32 %tmp801, i32 %tmp802
%tmp804 = add i32 %tmp803, %tmp796
%tmp805 = add nuw nsw i64 %tmp788, 2
%tmp806 = and i64 %tmp805, 1
%tmp807 = icmp eq i64 %tmp806, 0
%tmp808 = getelementptr inbounds [100 x i32], ptr %tmp13, i64 0, i64 %tmp805
%tmp809 = load i32, ptr %tmp808, align 4
%tmp810 = sub i32 0, %tmp809
%tmp811 = select i1 %tmp807, i32 %tmp809, i32 %tmp810
%tmp812 = add i32 %tmp811, %tmp804
%tmp813 = add nuw nsw i64 %tmp788, 3
%tmp814 = and i64 %tmp813, 1
%tmp815 = icmp eq i64 %tmp814, 0
%tmp816 = getelementptr inbounds [100 x i32], ptr %tmp13, i64 0, i64 %tmp813
%tmp817 = load i32, ptr %tmp816, align 4
%tmp818 = sub i32 0, %tmp817
%tmp819 = select i1 %tmp815, i32 %tmp817, i32 %tmp818
%tmp820 = add i32 %tmp819, %tmp812
%tmp821 = add nuw nsw i64 %tmp788, 4
%tmp822 = and i64 %tmp821, 1
%tmp823 = icmp eq i64 %tmp822, 0
%tmp824 = getelementptr inbounds [100 x i32], ptr %tmp13, i64 0, i64 %tmp821
%tmp825 = load i32, ptr %tmp824, align 4
%tmp826 = sub i32 0, %tmp825
%tmp827 = select i1 %tmp823, i32 %tmp825, i32 %tmp826
%tmp828 = add i32 %tmp827, %tmp820
%tmp829 = add nuw nsw i64 %tmp788, 5
%tmp830 = icmp eq i64 %tmp829, 100
br i1 %tmp830, label %bb831, label %bb787
bb831: ; preds = %bb831, %bb787
%tmp832 = phi i64 [ %tmp873, %bb831 ], [ 0, %bb787 ]
%tmp833 = phi i32 [ %tmp872, %bb831 ], [ 0, %bb787 ]
%tmp834 = and i64 %tmp832, 1
%tmp835 = icmp eq i64 %tmp834, 0
%tmp836 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp14, i64 0, i64 0, i64 %tmp832
%tmp837 = load i32, ptr %tmp836, align 4
%tmp838 = sub i32 0, %tmp837
%tmp839 = select i1 %tmp835, i32 %tmp837, i32 %tmp838
%tmp840 = add i32 %tmp839, %tmp833
%tmp841 = add nuw nsw i64 %tmp832, 1
%tmp842 = and i64 %tmp841, 1
%tmp843 = icmp eq i64 %tmp842, 0
%tmp844 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp14, i64 0, i64 0, i64 %tmp841
%tmp845 = load i32, ptr %tmp844, align 4
%tmp846 = sub i32 0, %tmp845
%tmp847 = select i1 %tmp843, i32 %tmp845, i32 %tmp846
%tmp848 = add i32 %tmp847, %tmp840
%tmp849 = add nuw nsw i64 %tmp832, 2
%tmp850 = and i64 %tmp849, 1
%tmp851 = icmp eq i64 %tmp850, 0
%tmp852 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp14, i64 0, i64 0, i64 %tmp849
%tmp853 = load i32, ptr %tmp852, align 4
%tmp854 = sub i32 0, %tmp853
%tmp855 = select i1 %tmp851, i32 %tmp853, i32 %tmp854
%tmp856 = add i32 %tmp855, %tmp848
%tmp857 = add nuw nsw i64 %tmp832, 3
%tmp858 = and i64 %tmp857, 1
%tmp859 = icmp eq i64 %tmp858, 0
%tmp860 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp14, i64 0, i64 0, i64 %tmp857
%tmp861 = load i32, ptr %tmp860, align 4
%tmp862 = sub i32 0, %tmp861
%tmp863 = select i1 %tmp859, i32 %tmp861, i32 %tmp862
%tmp864 = add i32 %tmp863, %tmp856
%tmp865 = add nuw nsw i64 %tmp832, 4
%tmp866 = and i64 %tmp865, 1
%tmp867 = icmp eq i64 %tmp866, 0
%tmp868 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp14, i64 0, i64 0, i64 %tmp865
%tmp869 = load i32, ptr %tmp868, align 4
%tmp870 = sub i32 0, %tmp869
%tmp871 = select i1 %tmp867, i32 %tmp869, i32 %tmp870
%tmp872 = add i32 %tmp871, %tmp864
%tmp873 = add nuw nsw i64 %tmp832, 5
%tmp874 = icmp eq i64 %tmp873, 10000
br i1 %tmp874, label %bb875, label %bb831
bb875: ; preds = %bb875, %bb831
%tmp876 = phi i64 [ %tmp917, %bb875 ], [ 0, %bb831 ]
%tmp877 = phi i32 [ %tmp916, %bb875 ], [ 0, %bb831 ]
%tmp878 = and i64 %tmp876, 1
%tmp879 = icmp eq i64 %tmp878, 0
%tmp880 = getelementptr inbounds [100 x i32], ptr %tmp15, i64 0, i64 %tmp876
%tmp881 = load i32, ptr %tmp880, align 4
%tmp882 = sub i32 0, %tmp881
%tmp883 = select i1 %tmp879, i32 %tmp881, i32 %tmp882
%tmp884 = add i32 %tmp883, %tmp877
%tmp885 = add nuw nsw i64 %tmp876, 1
%tmp886 = and i64 %tmp885, 1
%tmp887 = icmp eq i64 %tmp886, 0
%tmp888 = getelementptr inbounds [100 x i32], ptr %tmp15, i64 0, i64 %tmp885
%tmp889 = load i32, ptr %tmp888, align 4
%tmp890 = sub i32 0, %tmp889
%tmp891 = select i1 %tmp887, i32 %tmp889, i32 %tmp890
%tmp892 = add i32 %tmp891, %tmp884
%tmp893 = add nuw nsw i64 %tmp876, 2
%tmp894 = and i64 %tmp893, 1
%tmp895 = icmp eq i64 %tmp894, 0
%tmp896 = getelementptr inbounds [100 x i32], ptr %tmp15, i64 0, i64 %tmp893
%tmp897 = load i32, ptr %tmp896, align 4
%tmp898 = sub i32 0, %tmp897
%tmp899 = select i1 %tmp895, i32 %tmp897, i32 %tmp898
%tmp900 = add i32 %tmp899, %tmp892
%tmp901 = add nuw nsw i64 %tmp876, 3
%tmp902 = and i64 %tmp901, 1
%tmp903 = icmp eq i64 %tmp902, 0
%tmp904 = getelementptr inbounds [100 x i32], ptr %tmp15, i64 0, i64 %tmp901
%tmp905 = load i32, ptr %tmp904, align 4
%tmp906 = sub i32 0, %tmp905
%tmp907 = select i1 %tmp903, i32 %tmp905, i32 %tmp906
%tmp908 = add i32 %tmp907, %tmp900
%tmp909 = add nuw nsw i64 %tmp876, 4
%tmp910 = and i64 %tmp909, 1
%tmp911 = icmp eq i64 %tmp910, 0
%tmp912 = getelementptr inbounds [100 x i32], ptr %tmp15, i64 0, i64 %tmp909
%tmp913 = load i32, ptr %tmp912, align 4
%tmp914 = sub i32 0, %tmp913
%tmp915 = select i1 %tmp911, i32 %tmp913, i32 %tmp914
%tmp916 = add i32 %tmp915, %tmp908
%tmp917 = add nuw nsw i64 %tmp876, 5
%tmp918 = icmp eq i64 %tmp917, 100
br i1 %tmp918, label %bb919, label %bb875
bb919: ; preds = %bb919, %bb875
%tmp920 = phi i64 [ %tmp961, %bb919 ], [ 0, %bb875 ]
%tmp921 = phi i32 [ %tmp960, %bb919 ], [ 0, %bb875 ]
%tmp922 = and i64 %tmp920, 1
%tmp923 = icmp eq i64 %tmp922, 0
%tmp924 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp16, i64 0, i64 0, i64 %tmp920
%tmp925 = load i32, ptr %tmp924, align 4
%tmp926 = sub i32 0, %tmp925
%tmp927 = select i1 %tmp923, i32 %tmp925, i32 %tmp926
%tmp928 = add i32 %tmp927, %tmp921
%tmp929 = add nuw nsw i64 %tmp920, 1
%tmp930 = and i64 %tmp929, 1
%tmp931 = icmp eq i64 %tmp930, 0
%tmp932 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp16, i64 0, i64 0, i64 %tmp929
%tmp933 = load i32, ptr %tmp932, align 4
%tmp934 = sub i32 0, %tmp933
%tmp935 = select i1 %tmp931, i32 %tmp933, i32 %tmp934
%tmp936 = add i32 %tmp935, %tmp928
%tmp937 = add nuw nsw i64 %tmp920, 2
%tmp938 = and i64 %tmp937, 1
%tmp939 = icmp eq i64 %tmp938, 0
%tmp940 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp16, i64 0, i64 0, i64 %tmp937
%tmp941 = load i32, ptr %tmp940, align 4
%tmp942 = sub i32 0, %tmp941
%tmp943 = select i1 %tmp939, i32 %tmp941, i32 %tmp942
%tmp944 = add i32 %tmp943, %tmp936
%tmp945 = add nuw nsw i64 %tmp920, 3
%tmp946 = and i64 %tmp945, 1
%tmp947 = icmp eq i64 %tmp946, 0
%tmp948 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp16, i64 0, i64 0, i64 %tmp945
%tmp949 = load i32, ptr %tmp948, align 4
%tmp950 = sub i32 0, %tmp949
%tmp951 = select i1 %tmp947, i32 %tmp949, i32 %tmp950
%tmp952 = add i32 %tmp951, %tmp944
%tmp953 = add nuw nsw i64 %tmp920, 4
%tmp954 = and i64 %tmp953, 1
%tmp955 = icmp eq i64 %tmp954, 0
%tmp956 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp16, i64 0, i64 0, i64 %tmp953
%tmp957 = load i32, ptr %tmp956, align 4
%tmp958 = sub i32 0, %tmp957
%tmp959 = select i1 %tmp955, i32 %tmp957, i32 %tmp958
%tmp960 = add i32 %tmp959, %tmp952
%tmp961 = add nuw nsw i64 %tmp920, 5
%tmp962 = icmp eq i64 %tmp961, 10000
br i1 %tmp962, label %bb963, label %bb919
bb963: ; preds = %bb963, %bb919
%tmp964 = phi i64 [ %tmp1005, %bb963 ], [ 0, %bb919 ]
%tmp965 = phi i32 [ %tmp1004, %bb963 ], [ 0, %bb919 ]
%tmp966 = and i64 %tmp964, 1
%tmp967 = icmp eq i64 %tmp966, 0
%tmp968 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp17, i64 0, i64 0, i64 %tmp964
%tmp969 = load i32, ptr %tmp968, align 4
%tmp970 = sub i32 0, %tmp969
%tmp971 = select i1 %tmp967, i32 %tmp969, i32 %tmp970
%tmp972 = add i32 %tmp971, %tmp965
%tmp973 = add nuw nsw i64 %tmp964, 1
%tmp974 = and i64 %tmp973, 1
%tmp975 = icmp eq i64 %tmp974, 0
%tmp976 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp17, i64 0, i64 0, i64 %tmp973
%tmp977 = load i32, ptr %tmp976, align 4
%tmp978 = sub i32 0, %tmp977
%tmp979 = select i1 %tmp975, i32 %tmp977, i32 %tmp978
%tmp980 = add i32 %tmp979, %tmp972
%tmp981 = add nuw nsw i64 %tmp964, 2
%tmp982 = and i64 %tmp981, 1
%tmp983 = icmp eq i64 %tmp982, 0
%tmp984 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp17, i64 0, i64 0, i64 %tmp981
%tmp985 = load i32, ptr %tmp984, align 4
%tmp986 = sub i32 0, %tmp985
%tmp987 = select i1 %tmp983, i32 %tmp985, i32 %tmp986
%tmp988 = add i32 %tmp987, %tmp980
%tmp989 = add nuw nsw i64 %tmp964, 3
%tmp990 = and i64 %tmp989, 1
%tmp991 = icmp eq i64 %tmp990, 0
%tmp992 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp17, i64 0, i64 0, i64 %tmp989
%tmp993 = load i32, ptr %tmp992, align 4
%tmp994 = sub i32 0, %tmp993
%tmp995 = select i1 %tmp991, i32 %tmp993, i32 %tmp994
%tmp996 = add i32 %tmp995, %tmp988
%tmp997 = add nuw nsw i64 %tmp964, 4
%tmp998 = and i64 %tmp997, 1
%tmp999 = icmp eq i64 %tmp998, 0
%tmp1000 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp17, i64 0, i64 0, i64 %tmp997
%tmp1001 = load i32, ptr %tmp1000, align 4
%tmp1002 = sub i32 0, %tmp1001
%tmp1003 = select i1 %tmp999, i32 %tmp1001, i32 %tmp1002
%tmp1004 = add i32 %tmp1003, %tmp996
%tmp1005 = add nuw nsw i64 %tmp964, 5
%tmp1006 = icmp eq i64 %tmp1005, 10000
br i1 %tmp1006, label %bb1007, label %bb963
bb1007: ; preds = %bb1007, %bb963
%tmp1008 = phi i64 [ %tmp1049, %bb1007 ], [ 0, %bb963 ]
%tmp1009 = phi i32 [ %tmp1048, %bb1007 ], [ 0, %bb963 ]
%tmp1010 = and i64 %tmp1008, 1
%tmp1011 = icmp eq i64 %tmp1010, 0
%tmp1012 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp18, i64 0, i64 0, i64 %tmp1008
%tmp1013 = load i32, ptr %tmp1012, align 4
%tmp1014 = sub i32 0, %tmp1013
%tmp1015 = select i1 %tmp1011, i32 %tmp1013, i32 %tmp1014
%tmp1016 = add i32 %tmp1015, %tmp1009
%tmp1017 = add nuw nsw i64 %tmp1008, 1
%tmp1018 = and i64 %tmp1017, 1
%tmp1019 = icmp eq i64 %tmp1018, 0
%tmp1020 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp18, i64 0, i64 0, i64 %tmp1017
%tmp1021 = load i32, ptr %tmp1020, align 4
%tmp1022 = sub i32 0, %tmp1021
%tmp1023 = select i1 %tmp1019, i32 %tmp1021, i32 %tmp1022
%tmp1024 = add i32 %tmp1023, %tmp1016
%tmp1025 = add nuw nsw i64 %tmp1008, 2
%tmp1026 = and i64 %tmp1025, 1
%tmp1027 = icmp eq i64 %tmp1026, 0
%tmp1028 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp18, i64 0, i64 0, i64 %tmp1025
%tmp1029 = load i32, ptr %tmp1028, align 4
%tmp1030 = sub i32 0, %tmp1029
%tmp1031 = select i1 %tmp1027, i32 %tmp1029, i32 %tmp1030
%tmp1032 = add i32 %tmp1031, %tmp1024
%tmp1033 = add nuw nsw i64 %tmp1008, 3
%tmp1034 = and i64 %tmp1033, 1
%tmp1035 = icmp eq i64 %tmp1034, 0
%tmp1036 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp18, i64 0, i64 0, i64 %tmp1033
%tmp1037 = load i32, ptr %tmp1036, align 4
%tmp1038 = sub i32 0, %tmp1037
%tmp1039 = select i1 %tmp1035, i32 %tmp1037, i32 %tmp1038
%tmp1040 = add i32 %tmp1039, %tmp1032
%tmp1041 = add nuw nsw i64 %tmp1008, 4
%tmp1042 = and i64 %tmp1041, 1
%tmp1043 = icmp eq i64 %tmp1042, 0
%tmp1044 = getelementptr inbounds [100 x [100 x i32]], ptr %tmp18, i64 0, i64 0, i64 %tmp1041
%tmp1045 = load i32, ptr %tmp1044, align 4
%tmp1046 = sub i32 0, %tmp1045
%tmp1047 = select i1 %tmp1043, i32 %tmp1045, i32 %tmp1046
%tmp1048 = add i32 %tmp1047, %tmp1040
%tmp1049 = add nuw nsw i64 %tmp1008, 5
%tmp1050 = icmp eq i64 %tmp1049, 10000
br i1 %tmp1050, label %bb1051, label %bb1007
bb1051: ; preds = %bb1007
%tmp1052 = add i32 %tmp382, %tmp385
%tmp1053 = add i32 %tmp1052, %tmp520
%tmp1054 = add i32 %tmp1053, %tmp564
%tmp1055 = sub i32 %tmp1054, %tmp608
%tmp1056 = add i32 %tmp1055, %tmp652
%tmp1057 = sub i32 %tmp1056, %tmp696
%tmp1058 = add i32 %tmp1057, %tmp740
%tmp1059 = sub i32 %tmp1058, %tmp784
%tmp1060 = add i32 %tmp1059, %tmp828
%tmp1061 = sub i32 %tmp1060, %tmp872
%tmp1062 = add i32 %tmp1061, %tmp916
%tmp1063 = sub i32 %tmp1062, %tmp960
%tmp1064 = add i32 %tmp1063, %tmp1004
%tmp1065 = sub i32 %tmp1064, %tmp1048
call void @llvm.lifetime.end.p0(ptr nonnull %tmp18) #4
call void @llvm.lifetime.end.p0(ptr nonnull %tmp17) #4
call void @llvm.lifetime.end.p0(ptr nonnull %tmp16) #4
call void @llvm.lifetime.end.p0(ptr nonnull %tmp15) #4
call void @llvm.lifetime.end.p0(ptr nonnull %tmp14) #4
call void @llvm.lifetime.end.p0(ptr nonnull %tmp13) #4
call void @llvm.lifetime.end.p0(ptr nonnull %tmp12) #4
call void @llvm.lifetime.end.p0(ptr nonnull %tmp11) #4
call void @llvm.lifetime.end.p0(ptr nonnull %tmp10) #4
call void @llvm.lifetime.end.p0(ptr nonnull %tmp9) #4
call void @llvm.lifetime.end.p0(ptr nonnull %tmp8) #4
call void @llvm.lifetime.end.p0(ptr nonnull %tmp7) #4
call void @llvm.lifetime.end.p0(ptr nonnull %tmp) #4
ret i32 %tmp1065
}
; Function Attrs: argmemonly nounwind
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1) #1
; Function Attrs: argmemonly nounwind
declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) #1