; LLVM IR from intel/cryptography-primitives :: sources/ippcp/hash/sha512 (pcphashsha512px)

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

; Function Attrs: nounwind uwtable
define dso_local void @UpdateSHA512(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr noundef %3) #0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca [16 x i64], align 16
  %13 = alloca i32, align 4
  %14 = alloca [8 x i64], align 16
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #3
  %17 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %17, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #3
  %18 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %18, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #3
  %19 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %19, ptr %11, align 8, !tbaa !5
  br label %20

20:                                               ; preds = %2520, %4
  %21 = load i32, ptr %7, align 4, !tbaa !9
  %22 = icmp sge i32 %21, 128
  br i1 %22, label %23, label %2525

23:                                               ; preds = %20
  call void @llvm.lifetime.start.p0(i64 128, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 64, ptr %14) #3
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %24

24:                                               ; preds = %74, %23
  %25 = load i32, ptr %13, align 4, !tbaa !9
  %26 = icmp slt i32 %25, 16
  br i1 %26, label %27, label %77

27:                                               ; preds = %24
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  %28 = load ptr, ptr %9, align 8, !tbaa !5
  %29 = load i32, ptr %13, align 4, !tbaa !9
  %30 = mul nsw i32 2, %29
  %31 = sext i32 %30 to i64
  %32 = getelementptr inbounds i32, ptr %28, i64 %31
  %33 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %33, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  %34 = load ptr, ptr %9, align 8, !tbaa !5
  %35 = load i32, ptr %13, align 4, !tbaa !9
  %36 = mul nsw i32 2, %35
  %37 = add nsw i32 %36, 1
  %38 = sext i32 %37 to i64
  %39 = getelementptr inbounds i32, ptr %34, i64 %38
  %40 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %40, ptr %16, align 4, !tbaa !9
  %41 = load i32, ptr %16, align 4, !tbaa !9
  %42 = lshr i32 %41, 24
  %43 = load i32, ptr %16, align 4, !tbaa !9
  %44 = shl i32 %43, 8
  %45 = or i32 %42, %44
  %46 = and i32 %45, 16711935
  %47 = load i32, ptr %16, align 4, !tbaa !9
  %48 = lshr i32 %47, 8
  %49 = load i32, ptr %16, align 4, !tbaa !9
  %50 = shl i32 %49, 24
  %51 = or i32 %48, %50
  %52 = and i32 %51, -16711936
  %53 = or i32 %46, %52
  %54 = zext i32 %53 to i64
  %55 = load i32, ptr %15, align 4, !tbaa !9
  %56 = lshr i32 %55, 24
  %57 = load i32, ptr %15, align 4, !tbaa !9
  %58 = shl i32 %57, 8
  %59 = or i32 %56, %58
  %60 = and i32 %59, 16711935
  %61 = load i32, ptr %15, align 4, !tbaa !9
  %62 = lshr i32 %61, 8
  %63 = load i32, ptr %15, align 4, !tbaa !9
  %64 = shl i32 %63, 24
  %65 = or i32 %62, %64
  %66 = and i32 %65, -16711936
  %67 = or i32 %60, %66
  %68 = zext i32 %67 to i64
  %69 = shl i64 %68, 32
  %70 = or i64 %54, %69
  %71 = load i32, ptr %13, align 4, !tbaa !9
  %72 = sext i32 %71 to i64
  %73 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 %72
  store i64 %70, ptr %73, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  br label %74

74:                                               ; preds = %27
  %75 = load i32, ptr %13, align 4, !tbaa !9
  %76 = add nsw i32 %75, 1
  store i32 %76, ptr %13, align 4, !tbaa !9
  br label %24, !llvm.loop !13

77:                                               ; preds = %24
  %78 = load ptr, ptr %10, align 8, !tbaa !5
  %79 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  call void @CopyBlock(ptr noundef %78, ptr noundef %79, i32 noundef 64)
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %80

80:                                               ; preds = %2468, %77
  %81 = load i32, ptr %13, align 4, !tbaa !9
  %82 = icmp slt i32 %81, 80
  br i1 %82, label %83, label %2471

83:                                               ; preds = %80
  %84 = load i32, ptr %13, align 4, !tbaa !9
  %85 = icmp ne i32 %84, 0
  br i1 %85, label %86, label %132

86:                                               ; preds = %83
  %87 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 14
  %88 = load i64, ptr %87, align 16, !tbaa !11
  %89 = lshr i64 %88, 19
  %90 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 14
  %91 = load i64, ptr %90, align 16, !tbaa !11
  %92 = shl i64 %91, 45
  %93 = or i64 %89, %92
  %94 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 14
  %95 = load i64, ptr %94, align 16, !tbaa !11
  %96 = lshr i64 %95, 61
  %97 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 14
  %98 = load i64, ptr %97, align 16, !tbaa !11
  %99 = shl i64 %98, 3
  %100 = or i64 %96, %99
  %101 = xor i64 %93, %100
  %102 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 14
  %103 = load i64, ptr %102, align 16, !tbaa !11
  %104 = lshr i64 %103, 6
  %105 = xor i64 %101, %104
  %106 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 9
  %107 = load i64, ptr %106, align 8, !tbaa !11
  %108 = add i64 %105, %107
  %109 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 1
  %110 = load i64, ptr %109, align 8, !tbaa !11
  %111 = lshr i64 %110, 1
  %112 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 1
  %113 = load i64, ptr %112, align 8, !tbaa !11
  %114 = shl i64 %113, 63
  %115 = or i64 %111, %114
  %116 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 1
  %117 = load i64, ptr %116, align 8, !tbaa !11
  %118 = lshr i64 %117, 8
  %119 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 1
  %120 = load i64, ptr %119, align 8, !tbaa !11
  %121 = shl i64 %120, 56
  %122 = or i64 %118, %121
  %123 = xor i64 %115, %122
  %124 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 1
  %125 = load i64, ptr %124, align 8, !tbaa !11
  %126 = lshr i64 %125, 7
  %127 = xor i64 %123, %126
  %128 = add i64 %108, %127
  %129 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 0
  %130 = load i64, ptr %129, align 16, !tbaa !11
  %131 = add i64 %130, %128
  store i64 %131, ptr %129, align 16, !tbaa !11
  br label %135

132:                                              ; preds = %83
  %133 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 0
  %134 = load i64, ptr %133, align 16, !tbaa !11
  br label %135

135:                                              ; preds = %132, %86
  %136 = phi i64 [ %131, %86 ], [ %134, %132 ]
  %137 = load ptr, ptr %11, align 8, !tbaa !5
  %138 = load i32, ptr %13, align 4, !tbaa !9
  %139 = add nsw i32 0, %138
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds i64, ptr %137, i64 %140
  %142 = load i64, ptr %141, align 8, !tbaa !11
  %143 = add i64 %136, %142
  %144 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %145 = load i64, ptr %144, align 16, !tbaa !11
  %146 = lshr i64 %145, 14
  %147 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %148 = load i64, ptr %147, align 16, !tbaa !11
  %149 = shl i64 %148, 50
  %150 = or i64 %146, %149
  %151 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %152 = load i64, ptr %151, align 16, !tbaa !11
  %153 = lshr i64 %152, 18
  %154 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %155 = load i64, ptr %154, align 16, !tbaa !11
  %156 = shl i64 %155, 46
  %157 = or i64 %153, %156
  %158 = xor i64 %150, %157
  %159 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %160 = load i64, ptr %159, align 16, !tbaa !11
  %161 = lshr i64 %160, 41
  %162 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %163 = load i64, ptr %162, align 16, !tbaa !11
  %164 = shl i64 %163, 23
  %165 = or i64 %161, %164
  %166 = xor i64 %158, %165
  %167 = add i64 %143, %166
  %168 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %169 = load i64, ptr %168, align 16, !tbaa !11
  %170 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %171 = load i64, ptr %170, align 8, !tbaa !11
  %172 = and i64 %169, %171
  %173 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %174 = load i64, ptr %173, align 16, !tbaa !11
  %175 = xor i64 %174, -1
  %176 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %177 = load i64, ptr %176, align 16, !tbaa !11
  %178 = and i64 %175, %177
  %179 = xor i64 %172, %178
  %180 = add i64 %167, %179
  %181 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %182 = load i64, ptr %181, align 8, !tbaa !11
  %183 = add i64 %182, %180
  store i64 %183, ptr %181, align 8, !tbaa !11
  %184 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %185 = load i64, ptr %184, align 8, !tbaa !11
  %186 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %187 = load i64, ptr %186, align 8, !tbaa !11
  %188 = add i64 %187, %185
  store i64 %188, ptr %186, align 8, !tbaa !11
  %189 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %190 = load i64, ptr %189, align 16, !tbaa !11
  %191 = lshr i64 %190, 28
  %192 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %193 = load i64, ptr %192, align 16, !tbaa !11
  %194 = shl i64 %193, 36
  %195 = or i64 %191, %194
  %196 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %197 = load i64, ptr %196, align 16, !tbaa !11
  %198 = lshr i64 %197, 34
  %199 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %200 = load i64, ptr %199, align 16, !tbaa !11
  %201 = shl i64 %200, 30
  %202 = or i64 %198, %201
  %203 = xor i64 %195, %202
  %204 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %205 = load i64, ptr %204, align 16, !tbaa !11
  %206 = lshr i64 %205, 39
  %207 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %208 = load i64, ptr %207, align 16, !tbaa !11
  %209 = shl i64 %208, 25
  %210 = or i64 %206, %209
  %211 = xor i64 %203, %210
  %212 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %213 = load i64, ptr %212, align 16, !tbaa !11
  %214 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %215 = load i64, ptr %214, align 8, !tbaa !11
  %216 = and i64 %213, %215
  %217 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %218 = load i64, ptr %217, align 16, !tbaa !11
  %219 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %220 = load i64, ptr %219, align 16, !tbaa !11
  %221 = and i64 %218, %220
  %222 = xor i64 %216, %221
  %223 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %224 = load i64, ptr %223, align 8, !tbaa !11
  %225 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %226 = load i64, ptr %225, align 16, !tbaa !11
  %227 = and i64 %224, %226
  %228 = xor i64 %222, %227
  %229 = add i64 %211, %228
  %230 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %231 = load i64, ptr %230, align 8, !tbaa !11
  %232 = add i64 %231, %229
  store i64 %232, ptr %230, align 8, !tbaa !11
  %233 = load i32, ptr %13, align 4, !tbaa !9
  %234 = icmp ne i32 %233, 0
  br i1 %234, label %235, label %281

235:                                              ; preds = %135
  %236 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 15
  %237 = load i64, ptr %236, align 8, !tbaa !11
  %238 = lshr i64 %237, 19
  %239 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 15
  %240 = load i64, ptr %239, align 8, !tbaa !11
  %241 = shl i64 %240, 45
  %242 = or i64 %238, %241
  %243 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 15
  %244 = load i64, ptr %243, align 8, !tbaa !11
  %245 = lshr i64 %244, 61
  %246 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 15
  %247 = load i64, ptr %246, align 8, !tbaa !11
  %248 = shl i64 %247, 3
  %249 = or i64 %245, %248
  %250 = xor i64 %242, %249
  %251 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 15
  %252 = load i64, ptr %251, align 8, !tbaa !11
  %253 = lshr i64 %252, 6
  %254 = xor i64 %250, %253
  %255 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 10
  %256 = load i64, ptr %255, align 16, !tbaa !11
  %257 = add i64 %254, %256
  %258 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 2
  %259 = load i64, ptr %258, align 16, !tbaa !11
  %260 = lshr i64 %259, 1
  %261 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 2
  %262 = load i64, ptr %261, align 16, !tbaa !11
  %263 = shl i64 %262, 63
  %264 = or i64 %260, %263
  %265 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 2
  %266 = load i64, ptr %265, align 16, !tbaa !11
  %267 = lshr i64 %266, 8
  %268 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 2
  %269 = load i64, ptr %268, align 16, !tbaa !11
  %270 = shl i64 %269, 56
  %271 = or i64 %267, %270
  %272 = xor i64 %264, %271
  %273 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 2
  %274 = load i64, ptr %273, align 16, !tbaa !11
  %275 = lshr i64 %274, 7
  %276 = xor i64 %272, %275
  %277 = add i64 %257, %276
  %278 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 1
  %279 = load i64, ptr %278, align 8, !tbaa !11
  %280 = add i64 %279, %277
  store i64 %280, ptr %278, align 8, !tbaa !11
  br label %284

281:                                              ; preds = %135
  %282 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 1
  %283 = load i64, ptr %282, align 8, !tbaa !11
  br label %284

284:                                              ; preds = %281, %235
  %285 = phi i64 [ %280, %235 ], [ %283, %281 ]
  %286 = load ptr, ptr %11, align 8, !tbaa !5
  %287 = load i32, ptr %13, align 4, !tbaa !9
  %288 = add nsw i32 1, %287
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds i64, ptr %286, i64 %289
  %291 = load i64, ptr %290, align 8, !tbaa !11
  %292 = add i64 %285, %291
  %293 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %294 = load i64, ptr %293, align 8, !tbaa !11
  %295 = lshr i64 %294, 14
  %296 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %297 = load i64, ptr %296, align 8, !tbaa !11
  %298 = shl i64 %297, 50
  %299 = or i64 %295, %298
  %300 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %301 = load i64, ptr %300, align 8, !tbaa !11
  %302 = lshr i64 %301, 18
  %303 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %304 = load i64, ptr %303, align 8, !tbaa !11
  %305 = shl i64 %304, 46
  %306 = or i64 %302, %305
  %307 = xor i64 %299, %306
  %308 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %309 = load i64, ptr %308, align 8, !tbaa !11
  %310 = lshr i64 %309, 41
  %311 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %312 = load i64, ptr %311, align 8, !tbaa !11
  %313 = shl i64 %312, 23
  %314 = or i64 %310, %313
  %315 = xor i64 %307, %314
  %316 = add i64 %292, %315
  %317 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %318 = load i64, ptr %317, align 8, !tbaa !11
  %319 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %320 = load i64, ptr %319, align 16, !tbaa !11
  %321 = and i64 %318, %320
  %322 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %323 = load i64, ptr %322, align 8, !tbaa !11
  %324 = xor i64 %323, -1
  %325 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %326 = load i64, ptr %325, align 8, !tbaa !11
  %327 = and i64 %324, %326
  %328 = xor i64 %321, %327
  %329 = add i64 %316, %328
  %330 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %331 = load i64, ptr %330, align 16, !tbaa !11
  %332 = add i64 %331, %329
  store i64 %332, ptr %330, align 16, !tbaa !11
  %333 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %334 = load i64, ptr %333, align 16, !tbaa !11
  %335 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %336 = load i64, ptr %335, align 16, !tbaa !11
  %337 = add i64 %336, %334
  store i64 %337, ptr %335, align 16, !tbaa !11
  %338 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %339 = load i64, ptr %338, align 8, !tbaa !11
  %340 = lshr i64 %339, 28
  %341 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %342 = load i64, ptr %341, align 8, !tbaa !11
  %343 = shl i64 %342, 36
  %344 = or i64 %340, %343
  %345 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %346 = load i64, ptr %345, align 8, !tbaa !11
  %347 = lshr i64 %346, 34
  %348 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %349 = load i64, ptr %348, align 8, !tbaa !11
  %350 = shl i64 %349, 30
  %351 = or i64 %347, %350
  %352 = xor i64 %344, %351
  %353 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %354 = load i64, ptr %353, align 8, !tbaa !11
  %355 = lshr i64 %354, 39
  %356 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %357 = load i64, ptr %356, align 8, !tbaa !11
  %358 = shl i64 %357, 25
  %359 = or i64 %355, %358
  %360 = xor i64 %352, %359
  %361 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %362 = load i64, ptr %361, align 8, !tbaa !11
  %363 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %364 = load i64, ptr %363, align 16, !tbaa !11
  %365 = and i64 %362, %364
  %366 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %367 = load i64, ptr %366, align 8, !tbaa !11
  %368 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %369 = load i64, ptr %368, align 8, !tbaa !11
  %370 = and i64 %367, %369
  %371 = xor i64 %365, %370
  %372 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %373 = load i64, ptr %372, align 16, !tbaa !11
  %374 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %375 = load i64, ptr %374, align 8, !tbaa !11
  %376 = and i64 %373, %375
  %377 = xor i64 %371, %376
  %378 = add i64 %360, %377
  %379 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %380 = load i64, ptr %379, align 16, !tbaa !11
  %381 = add i64 %380, %378
  store i64 %381, ptr %379, align 16, !tbaa !11
  %382 = load i32, ptr %13, align 4, !tbaa !9
  %383 = icmp ne i32 %382, 0
  br i1 %383, label %384, label %430

384:                                              ; preds = %284
  %385 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 0
  %386 = load i64, ptr %385, align 16, !tbaa !11
  %387 = lshr i64 %386, 19
  %388 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 0
  %389 = load i64, ptr %388, align 16, !tbaa !11
  %390 = shl i64 %389, 45
  %391 = or i64 %387, %390
  %392 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 0
  %393 = load i64, ptr %392, align 16, !tbaa !11
  %394 = lshr i64 %393, 61
  %395 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 0
  %396 = load i64, ptr %395, align 16, !tbaa !11
  %397 = shl i64 %396, 3
  %398 = or i64 %394, %397
  %399 = xor i64 %391, %398
  %400 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 0
  %401 = load i64, ptr %400, align 16, !tbaa !11
  %402 = lshr i64 %401, 6
  %403 = xor i64 %399, %402
  %404 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 11
  %405 = load i64, ptr %404, align 8, !tbaa !11
  %406 = add i64 %403, %405
  %407 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 3
  %408 = load i64, ptr %407, align 8, !tbaa !11
  %409 = lshr i64 %408, 1
  %410 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 3
  %411 = load i64, ptr %410, align 8, !tbaa !11
  %412 = shl i64 %411, 63
  %413 = or i64 %409, %412
  %414 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 3
  %415 = load i64, ptr %414, align 8, !tbaa !11
  %416 = lshr i64 %415, 8
  %417 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 3
  %418 = load i64, ptr %417, align 8, !tbaa !11
  %419 = shl i64 %418, 56
  %420 = or i64 %416, %419
  %421 = xor i64 %413, %420
  %422 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 3
  %423 = load i64, ptr %422, align 8, !tbaa !11
  %424 = lshr i64 %423, 7
  %425 = xor i64 %421, %424
  %426 = add i64 %406, %425
  %427 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 2
  %428 = load i64, ptr %427, align 16, !tbaa !11
  %429 = add i64 %428, %426
  store i64 %429, ptr %427, align 16, !tbaa !11
  br label %433

430:                                              ; preds = %284
  %431 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 2
  %432 = load i64, ptr %431, align 16, !tbaa !11
  br label %433

433:                                              ; preds = %430, %384
  %434 = phi i64 [ %429, %384 ], [ %432, %430 ]
  %435 = load ptr, ptr %11, align 8, !tbaa !5
  %436 = load i32, ptr %13, align 4, !tbaa !9
  %437 = add nsw i32 2, %436
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds i64, ptr %435, i64 %438
  %440 = load i64, ptr %439, align 8, !tbaa !11
  %441 = add i64 %434, %440
  %442 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %443 = load i64, ptr %442, align 16, !tbaa !11
  %444 = lshr i64 %443, 14
  %445 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %446 = load i64, ptr %445, align 16, !tbaa !11
  %447 = shl i64 %446, 50
  %448 = or i64 %444, %447
  %449 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %450 = load i64, ptr %449, align 16, !tbaa !11
  %451 = lshr i64 %450, 18
  %452 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %453 = load i64, ptr %452, align 16, !tbaa !11
  %454 = shl i64 %453, 46
  %455 = or i64 %451, %454
  %456 = xor i64 %448, %455
  %457 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %458 = load i64, ptr %457, align 16, !tbaa !11
  %459 = lshr i64 %458, 41
  %460 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %461 = load i64, ptr %460, align 16, !tbaa !11
  %462 = shl i64 %461, 23
  %463 = or i64 %459, %462
  %464 = xor i64 %456, %463
  %465 = add i64 %441, %464
  %466 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %467 = load i64, ptr %466, align 16, !tbaa !11
  %468 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %469 = load i64, ptr %468, align 8, !tbaa !11
  %470 = and i64 %467, %469
  %471 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %472 = load i64, ptr %471, align 16, !tbaa !11
  %473 = xor i64 %472, -1
  %474 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %475 = load i64, ptr %474, align 16, !tbaa !11
  %476 = and i64 %473, %475
  %477 = xor i64 %470, %476
  %478 = add i64 %465, %477
  %479 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %480 = load i64, ptr %479, align 8, !tbaa !11
  %481 = add i64 %480, %478
  store i64 %481, ptr %479, align 8, !tbaa !11
  %482 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %483 = load i64, ptr %482, align 8, !tbaa !11
  %484 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %485 = load i64, ptr %484, align 8, !tbaa !11
  %486 = add i64 %485, %483
  store i64 %486, ptr %484, align 8, !tbaa !11
  %487 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %488 = load i64, ptr %487, align 16, !tbaa !11
  %489 = lshr i64 %488, 28
  %490 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %491 = load i64, ptr %490, align 16, !tbaa !11
  %492 = shl i64 %491, 36
  %493 = or i64 %489, %492
  %494 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %495 = load i64, ptr %494, align 16, !tbaa !11
  %496 = lshr i64 %495, 34
  %497 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %498 = load i64, ptr %497, align 16, !tbaa !11
  %499 = shl i64 %498, 30
  %500 = or i64 %496, %499
  %501 = xor i64 %493, %500
  %502 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %503 = load i64, ptr %502, align 16, !tbaa !11
  %504 = lshr i64 %503, 39
  %505 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %506 = load i64, ptr %505, align 16, !tbaa !11
  %507 = shl i64 %506, 25
  %508 = or i64 %504, %507
  %509 = xor i64 %501, %508
  %510 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %511 = load i64, ptr %510, align 16, !tbaa !11
  %512 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %513 = load i64, ptr %512, align 8, !tbaa !11
  %514 = and i64 %511, %513
  %515 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %516 = load i64, ptr %515, align 16, !tbaa !11
  %517 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %518 = load i64, ptr %517, align 16, !tbaa !11
  %519 = and i64 %516, %518
  %520 = xor i64 %514, %519
  %521 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %522 = load i64, ptr %521, align 8, !tbaa !11
  %523 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %524 = load i64, ptr %523, align 16, !tbaa !11
  %525 = and i64 %522, %524
  %526 = xor i64 %520, %525
  %527 = add i64 %509, %526
  %528 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %529 = load i64, ptr %528, align 8, !tbaa !11
  %530 = add i64 %529, %527
  store i64 %530, ptr %528, align 8, !tbaa !11
  %531 = load i32, ptr %13, align 4, !tbaa !9
  %532 = icmp ne i32 %531, 0
  br i1 %532, label %533, label %579

533:                                              ; preds = %433
  %534 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 1
  %535 = load i64, ptr %534, align 8, !tbaa !11
  %536 = lshr i64 %535, 19
  %537 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 1
  %538 = load i64, ptr %537, align 8, !tbaa !11
  %539 = shl i64 %538, 45
  %540 = or i64 %536, %539
  %541 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 1
  %542 = load i64, ptr %541, align 8, !tbaa !11
  %543 = lshr i64 %542, 61
  %544 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 1
  %545 = load i64, ptr %544, align 8, !tbaa !11
  %546 = shl i64 %545, 3
  %547 = or i64 %543, %546
  %548 = xor i64 %540, %547
  %549 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 1
  %550 = load i64, ptr %549, align 8, !tbaa !11
  %551 = lshr i64 %550, 6
  %552 = xor i64 %548, %551
  %553 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 12
  %554 = load i64, ptr %553, align 16, !tbaa !11
  %555 = add i64 %552, %554
  %556 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 4
  %557 = load i64, ptr %556, align 16, !tbaa !11
  %558 = lshr i64 %557, 1
  %559 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 4
  %560 = load i64, ptr %559, align 16, !tbaa !11
  %561 = shl i64 %560, 63
  %562 = or i64 %558, %561
  %563 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 4
  %564 = load i64, ptr %563, align 16, !tbaa !11
  %565 = lshr i64 %564, 8
  %566 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 4
  %567 = load i64, ptr %566, align 16, !tbaa !11
  %568 = shl i64 %567, 56
  %569 = or i64 %565, %568
  %570 = xor i64 %562, %569
  %571 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 4
  %572 = load i64, ptr %571, align 16, !tbaa !11
  %573 = lshr i64 %572, 7
  %574 = xor i64 %570, %573
  %575 = add i64 %555, %574
  %576 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 3
  %577 = load i64, ptr %576, align 8, !tbaa !11
  %578 = add i64 %577, %575
  store i64 %578, ptr %576, align 8, !tbaa !11
  br label %582

579:                                              ; preds = %433
  %580 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 3
  %581 = load i64, ptr %580, align 8, !tbaa !11
  br label %582

582:                                              ; preds = %579, %533
  %583 = phi i64 [ %578, %533 ], [ %581, %579 ]
  %584 = load ptr, ptr %11, align 8, !tbaa !5
  %585 = load i32, ptr %13, align 4, !tbaa !9
  %586 = add nsw i32 3, %585
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds i64, ptr %584, i64 %587
  %589 = load i64, ptr %588, align 8, !tbaa !11
  %590 = add i64 %583, %589
  %591 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %592 = load i64, ptr %591, align 8, !tbaa !11
  %593 = lshr i64 %592, 14
  %594 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %595 = load i64, ptr %594, align 8, !tbaa !11
  %596 = shl i64 %595, 50
  %597 = or i64 %593, %596
  %598 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %599 = load i64, ptr %598, align 8, !tbaa !11
  %600 = lshr i64 %599, 18
  %601 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %602 = load i64, ptr %601, align 8, !tbaa !11
  %603 = shl i64 %602, 46
  %604 = or i64 %600, %603
  %605 = xor i64 %597, %604
  %606 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %607 = load i64, ptr %606, align 8, !tbaa !11
  %608 = lshr i64 %607, 41
  %609 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %610 = load i64, ptr %609, align 8, !tbaa !11
  %611 = shl i64 %610, 23
  %612 = or i64 %608, %611
  %613 = xor i64 %605, %612
  %614 = add i64 %590, %613
  %615 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %616 = load i64, ptr %615, align 8, !tbaa !11
  %617 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %618 = load i64, ptr %617, align 16, !tbaa !11
  %619 = and i64 %616, %618
  %620 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %621 = load i64, ptr %620, align 8, !tbaa !11
  %622 = xor i64 %621, -1
  %623 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %624 = load i64, ptr %623, align 8, !tbaa !11
  %625 = and i64 %622, %624
  %626 = xor i64 %619, %625
  %627 = add i64 %614, %626
  %628 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %629 = load i64, ptr %628, align 16, !tbaa !11
  %630 = add i64 %629, %627
  store i64 %630, ptr %628, align 16, !tbaa !11
  %631 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %632 = load i64, ptr %631, align 16, !tbaa !11
  %633 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %634 = load i64, ptr %633, align 16, !tbaa !11
  %635 = add i64 %634, %632
  store i64 %635, ptr %633, align 16, !tbaa !11
  %636 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %637 = load i64, ptr %636, align 8, !tbaa !11
  %638 = lshr i64 %637, 28
  %639 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %640 = load i64, ptr %639, align 8, !tbaa !11
  %641 = shl i64 %640, 36
  %642 = or i64 %638, %641
  %643 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %644 = load i64, ptr %643, align 8, !tbaa !11
  %645 = lshr i64 %644, 34
  %646 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %647 = load i64, ptr %646, align 8, !tbaa !11
  %648 = shl i64 %647, 30
  %649 = or i64 %645, %648
  %650 = xor i64 %642, %649
  %651 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %652 = load i64, ptr %651, align 8, !tbaa !11
  %653 = lshr i64 %652, 39
  %654 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %655 = load i64, ptr %654, align 8, !tbaa !11
  %656 = shl i64 %655, 25
  %657 = or i64 %653, %656
  %658 = xor i64 %650, %657
  %659 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %660 = load i64, ptr %659, align 8, !tbaa !11
  %661 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %662 = load i64, ptr %661, align 16, !tbaa !11
  %663 = and i64 %660, %662
  %664 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %665 = load i64, ptr %664, align 8, !tbaa !11
  %666 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %667 = load i64, ptr %666, align 8, !tbaa !11
  %668 = and i64 %665, %667
  %669 = xor i64 %663, %668
  %670 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %671 = load i64, ptr %670, align 16, !tbaa !11
  %672 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %673 = load i64, ptr %672, align 8, !tbaa !11
  %674 = and i64 %671, %673
  %675 = xor i64 %669, %674
  %676 = add i64 %658, %675
  %677 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %678 = load i64, ptr %677, align 16, !tbaa !11
  %679 = add i64 %678, %676
  store i64 %679, ptr %677, align 16, !tbaa !11
  %680 = load i32, ptr %13, align 4, !tbaa !9
  %681 = icmp ne i32 %680, 0
  br i1 %681, label %682, label %728

682:                                              ; preds = %582
  %683 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 2
  %684 = load i64, ptr %683, align 16, !tbaa !11
  %685 = lshr i64 %684, 19
  %686 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 2
  %687 = load i64, ptr %686, align 16, !tbaa !11
  %688 = shl i64 %687, 45
  %689 = or i64 %685, %688
  %690 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 2
  %691 = load i64, ptr %690, align 16, !tbaa !11
  %692 = lshr i64 %691, 61
  %693 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 2
  %694 = load i64, ptr %693, align 16, !tbaa !11
  %695 = shl i64 %694, 3
  %696 = or i64 %692, %695
  %697 = xor i64 %689, %696
  %698 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 2
  %699 = load i64, ptr %698, align 16, !tbaa !11
  %700 = lshr i64 %699, 6
  %701 = xor i64 %697, %700
  %702 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 13
  %703 = load i64, ptr %702, align 8, !tbaa !11
  %704 = add i64 %701, %703
  %705 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 5
  %706 = load i64, ptr %705, align 8, !tbaa !11
  %707 = lshr i64 %706, 1
  %708 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 5
  %709 = load i64, ptr %708, align 8, !tbaa !11
  %710 = shl i64 %709, 63
  %711 = or i64 %707, %710
  %712 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 5
  %713 = load i64, ptr %712, align 8, !tbaa !11
  %714 = lshr i64 %713, 8
  %715 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 5
  %716 = load i64, ptr %715, align 8, !tbaa !11
  %717 = shl i64 %716, 56
  %718 = or i64 %714, %717
  %719 = xor i64 %711, %718
  %720 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 5
  %721 = load i64, ptr %720, align 8, !tbaa !11
  %722 = lshr i64 %721, 7
  %723 = xor i64 %719, %722
  %724 = add i64 %704, %723
  %725 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 4
  %726 = load i64, ptr %725, align 16, !tbaa !11
  %727 = add i64 %726, %724
  store i64 %727, ptr %725, align 16, !tbaa !11
  br label %731

728:                                              ; preds = %582
  %729 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 4
  %730 = load i64, ptr %729, align 16, !tbaa !11
  br label %731

731:                                              ; preds = %728, %682
  %732 = phi i64 [ %727, %682 ], [ %730, %728 ]
  %733 = load ptr, ptr %11, align 8, !tbaa !5
  %734 = load i32, ptr %13, align 4, !tbaa !9
  %735 = add nsw i32 4, %734
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds i64, ptr %733, i64 %736
  %738 = load i64, ptr %737, align 8, !tbaa !11
  %739 = add i64 %732, %738
  %740 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %741 = load i64, ptr %740, align 16, !tbaa !11
  %742 = lshr i64 %741, 14
  %743 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %744 = load i64, ptr %743, align 16, !tbaa !11
  %745 = shl i64 %744, 50
  %746 = or i64 %742, %745
  %747 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %748 = load i64, ptr %747, align 16, !tbaa !11
  %749 = lshr i64 %748, 18
  %750 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %751 = load i64, ptr %750, align 16, !tbaa !11
  %752 = shl i64 %751, 46
  %753 = or i64 %749, %752
  %754 = xor i64 %746, %753
  %755 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %756 = load i64, ptr %755, align 16, !tbaa !11
  %757 = lshr i64 %756, 41
  %758 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %759 = load i64, ptr %758, align 16, !tbaa !11
  %760 = shl i64 %759, 23
  %761 = or i64 %757, %760
  %762 = xor i64 %754, %761
  %763 = add i64 %739, %762
  %764 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %765 = load i64, ptr %764, align 16, !tbaa !11
  %766 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %767 = load i64, ptr %766, align 8, !tbaa !11
  %768 = and i64 %765, %767
  %769 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %770 = load i64, ptr %769, align 16, !tbaa !11
  %771 = xor i64 %770, -1
  %772 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %773 = load i64, ptr %772, align 16, !tbaa !11
  %774 = and i64 %771, %773
  %775 = xor i64 %768, %774
  %776 = add i64 %763, %775
  %777 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %778 = load i64, ptr %777, align 8, !tbaa !11
  %779 = add i64 %778, %776
  store i64 %779, ptr %777, align 8, !tbaa !11
  %780 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %781 = load i64, ptr %780, align 8, !tbaa !11
  %782 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %783 = load i64, ptr %782, align 8, !tbaa !11
  %784 = add i64 %783, %781
  store i64 %784, ptr %782, align 8, !tbaa !11
  %785 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %786 = load i64, ptr %785, align 16, !tbaa !11
  %787 = lshr i64 %786, 28
  %788 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %789 = load i64, ptr %788, align 16, !tbaa !11
  %790 = shl i64 %789, 36
  %791 = or i64 %787, %790
  %792 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %793 = load i64, ptr %792, align 16, !tbaa !11
  %794 = lshr i64 %793, 34
  %795 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %796 = load i64, ptr %795, align 16, !tbaa !11
  %797 = shl i64 %796, 30
  %798 = or i64 %794, %797
  %799 = xor i64 %791, %798
  %800 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %801 = load i64, ptr %800, align 16, !tbaa !11
  %802 = lshr i64 %801, 39
  %803 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %804 = load i64, ptr %803, align 16, !tbaa !11
  %805 = shl i64 %804, 25
  %806 = or i64 %802, %805
  %807 = xor i64 %799, %806
  %808 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %809 = load i64, ptr %808, align 16, !tbaa !11
  %810 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %811 = load i64, ptr %810, align 8, !tbaa !11
  %812 = and i64 %809, %811
  %813 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %814 = load i64, ptr %813, align 16, !tbaa !11
  %815 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %816 = load i64, ptr %815, align 16, !tbaa !11
  %817 = and i64 %814, %816
  %818 = xor i64 %812, %817
  %819 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %820 = load i64, ptr %819, align 8, !tbaa !11
  %821 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %822 = load i64, ptr %821, align 16, !tbaa !11
  %823 = and i64 %820, %822
  %824 = xor i64 %818, %823
  %825 = add i64 %807, %824
  %826 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %827 = load i64, ptr %826, align 8, !tbaa !11
  %828 = add i64 %827, %825
  store i64 %828, ptr %826, align 8, !tbaa !11
  %829 = load i32, ptr %13, align 4, !tbaa !9
  %830 = icmp ne i32 %829, 0
  br i1 %830, label %831, label %877

831:                                              ; preds = %731
  %832 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 3
  %833 = load i64, ptr %832, align 8, !tbaa !11
  %834 = lshr i64 %833, 19
  %835 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 3
  %836 = load i64, ptr %835, align 8, !tbaa !11
  %837 = shl i64 %836, 45
  %838 = or i64 %834, %837
  %839 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 3
  %840 = load i64, ptr %839, align 8, !tbaa !11
  %841 = lshr i64 %840, 61
  %842 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 3
  %843 = load i64, ptr %842, align 8, !tbaa !11
  %844 = shl i64 %843, 3
  %845 = or i64 %841, %844
  %846 = xor i64 %838, %845
  %847 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 3
  %848 = load i64, ptr %847, align 8, !tbaa !11
  %849 = lshr i64 %848, 6
  %850 = xor i64 %846, %849
  %851 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 14
  %852 = load i64, ptr %851, align 16, !tbaa !11
  %853 = add i64 %850, %852
  %854 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 6
  %855 = load i64, ptr %854, align 16, !tbaa !11
  %856 = lshr i64 %855, 1
  %857 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 6
  %858 = load i64, ptr %857, align 16, !tbaa !11
  %859 = shl i64 %858, 63
  %860 = or i64 %856, %859
  %861 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 6
  %862 = load i64, ptr %861, align 16, !tbaa !11
  %863 = lshr i64 %862, 8
  %864 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 6
  %865 = load i64, ptr %864, align 16, !tbaa !11
  %866 = shl i64 %865, 56
  %867 = or i64 %863, %866
  %868 = xor i64 %860, %867
  %869 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 6
  %870 = load i64, ptr %869, align 16, !tbaa !11
  %871 = lshr i64 %870, 7
  %872 = xor i64 %868, %871
  %873 = add i64 %853, %872
  %874 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 5
  %875 = load i64, ptr %874, align 8, !tbaa !11
  %876 = add i64 %875, %873
  store i64 %876, ptr %874, align 8, !tbaa !11
  br label %880

877:                                              ; preds = %731
  %878 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 5
  %879 = load i64, ptr %878, align 8, !tbaa !11
  br label %880

880:                                              ; preds = %877, %831
  %881 = phi i64 [ %876, %831 ], [ %879, %877 ]
  %882 = load ptr, ptr %11, align 8, !tbaa !5
  %883 = load i32, ptr %13, align 4, !tbaa !9
  %884 = add nsw i32 5, %883
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds i64, ptr %882, i64 %885
  %887 = load i64, ptr %886, align 8, !tbaa !11
  %888 = add i64 %881, %887
  %889 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %890 = load i64, ptr %889, align 8, !tbaa !11
  %891 = lshr i64 %890, 14
  %892 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %893 = load i64, ptr %892, align 8, !tbaa !11
  %894 = shl i64 %893, 50
  %895 = or i64 %891, %894
  %896 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %897 = load i64, ptr %896, align 8, !tbaa !11
  %898 = lshr i64 %897, 18
  %899 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %900 = load i64, ptr %899, align 8, !tbaa !11
  %901 = shl i64 %900, 46
  %902 = or i64 %898, %901
  %903 = xor i64 %895, %902
  %904 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %905 = load i64, ptr %904, align 8, !tbaa !11
  %906 = lshr i64 %905, 41
  %907 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %908 = load i64, ptr %907, align 8, !tbaa !11
  %909 = shl i64 %908, 23
  %910 = or i64 %906, %909
  %911 = xor i64 %903, %910
  %912 = add i64 %888, %911
  %913 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %914 = load i64, ptr %913, align 8, !tbaa !11
  %915 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %916 = load i64, ptr %915, align 16, !tbaa !11
  %917 = and i64 %914, %916
  %918 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %919 = load i64, ptr %918, align 8, !tbaa !11
  %920 = xor i64 %919, -1
  %921 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %922 = load i64, ptr %921, align 8, !tbaa !11
  %923 = and i64 %920, %922
  %924 = xor i64 %917, %923
  %925 = add i64 %912, %924
  %926 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %927 = load i64, ptr %926, align 16, !tbaa !11
  %928 = add i64 %927, %925
  store i64 %928, ptr %926, align 16, !tbaa !11
  %929 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %930 = load i64, ptr %929, align 16, !tbaa !11
  %931 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %932 = load i64, ptr %931, align 16, !tbaa !11
  %933 = add i64 %932, %930
  store i64 %933, ptr %931, align 16, !tbaa !11
  %934 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %935 = load i64, ptr %934, align 8, !tbaa !11
  %936 = lshr i64 %935, 28
  %937 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %938 = load i64, ptr %937, align 8, !tbaa !11
  %939 = shl i64 %938, 36
  %940 = or i64 %936, %939
  %941 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %942 = load i64, ptr %941, align 8, !tbaa !11
  %943 = lshr i64 %942, 34
  %944 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %945 = load i64, ptr %944, align 8, !tbaa !11
  %946 = shl i64 %945, 30
  %947 = or i64 %943, %946
  %948 = xor i64 %940, %947
  %949 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %950 = load i64, ptr %949, align 8, !tbaa !11
  %951 = lshr i64 %950, 39
  %952 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %953 = load i64, ptr %952, align 8, !tbaa !11
  %954 = shl i64 %953, 25
  %955 = or i64 %951, %954
  %956 = xor i64 %948, %955
  %957 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %958 = load i64, ptr %957, align 8, !tbaa !11
  %959 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %960 = load i64, ptr %959, align 16, !tbaa !11
  %961 = and i64 %958, %960
  %962 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %963 = load i64, ptr %962, align 8, !tbaa !11
  %964 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %965 = load i64, ptr %964, align 8, !tbaa !11
  %966 = and i64 %963, %965
  %967 = xor i64 %961, %966
  %968 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %969 = load i64, ptr %968, align 16, !tbaa !11
  %970 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %971 = load i64, ptr %970, align 8, !tbaa !11
  %972 = and i64 %969, %971
  %973 = xor i64 %967, %972
  %974 = add i64 %956, %973
  %975 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %976 = load i64, ptr %975, align 16, !tbaa !11
  %977 = add i64 %976, %974
  store i64 %977, ptr %975, align 16, !tbaa !11
  %978 = load i32, ptr %13, align 4, !tbaa !9
  %979 = icmp ne i32 %978, 0
  br i1 %979, label %980, label %1026

980:                                              ; preds = %880
  %981 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 4
  %982 = load i64, ptr %981, align 16, !tbaa !11
  %983 = lshr i64 %982, 19
  %984 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 4
  %985 = load i64, ptr %984, align 16, !tbaa !11
  %986 = shl i64 %985, 45
  %987 = or i64 %983, %986
  %988 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 4
  %989 = load i64, ptr %988, align 16, !tbaa !11
  %990 = lshr i64 %989, 61
  %991 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 4
  %992 = load i64, ptr %991, align 16, !tbaa !11
  %993 = shl i64 %992, 3
  %994 = or i64 %990, %993
  %995 = xor i64 %987, %994
  %996 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 4
  %997 = load i64, ptr %996, align 16, !tbaa !11
  %998 = lshr i64 %997, 6
  %999 = xor i64 %995, %998
  %1000 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 15
  %1001 = load i64, ptr %1000, align 8, !tbaa !11
  %1002 = add i64 %999, %1001
  %1003 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 7
  %1004 = load i64, ptr %1003, align 8, !tbaa !11
  %1005 = lshr i64 %1004, 1
  %1006 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 7
  %1007 = load i64, ptr %1006, align 8, !tbaa !11
  %1008 = shl i64 %1007, 63
  %1009 = or i64 %1005, %1008
  %1010 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 7
  %1011 = load i64, ptr %1010, align 8, !tbaa !11
  %1012 = lshr i64 %1011, 8
  %1013 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 7
  %1014 = load i64, ptr %1013, align 8, !tbaa !11
  %1015 = shl i64 %1014, 56
  %1016 = or i64 %1012, %1015
  %1017 = xor i64 %1009, %1016
  %1018 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 7
  %1019 = load i64, ptr %1018, align 8, !tbaa !11
  %1020 = lshr i64 %1019, 7
  %1021 = xor i64 %1017, %1020
  %1022 = add i64 %1002, %1021
  %1023 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 6
  %1024 = load i64, ptr %1023, align 16, !tbaa !11
  %1025 = add i64 %1024, %1022
  store i64 %1025, ptr %1023, align 16, !tbaa !11
  br label %1029

1026:                                             ; preds = %880
  %1027 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 6
  %1028 = load i64, ptr %1027, align 16, !tbaa !11
  br label %1029

1029:                                             ; preds = %1026, %980
  %1030 = phi i64 [ %1025, %980 ], [ %1028, %1026 ]
  %1031 = load ptr, ptr %11, align 8, !tbaa !5
  %1032 = load i32, ptr %13, align 4, !tbaa !9
  %1033 = add nsw i32 6, %1032
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds i64, ptr %1031, i64 %1034
  %1036 = load i64, ptr %1035, align 8, !tbaa !11
  %1037 = add i64 %1030, %1036
  %1038 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1039 = load i64, ptr %1038, align 16, !tbaa !11
  %1040 = lshr i64 %1039, 14
  %1041 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1042 = load i64, ptr %1041, align 16, !tbaa !11
  %1043 = shl i64 %1042, 50
  %1044 = or i64 %1040, %1043
  %1045 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1046 = load i64, ptr %1045, align 16, !tbaa !11
  %1047 = lshr i64 %1046, 18
  %1048 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1049 = load i64, ptr %1048, align 16, !tbaa !11
  %1050 = shl i64 %1049, 46
  %1051 = or i64 %1047, %1050
  %1052 = xor i64 %1044, %1051
  %1053 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1054 = load i64, ptr %1053, align 16, !tbaa !11
  %1055 = lshr i64 %1054, 41
  %1056 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1057 = load i64, ptr %1056, align 16, !tbaa !11
  %1058 = shl i64 %1057, 23
  %1059 = or i64 %1055, %1058
  %1060 = xor i64 %1052, %1059
  %1061 = add i64 %1037, %1060
  %1062 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1063 = load i64, ptr %1062, align 16, !tbaa !11
  %1064 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1065 = load i64, ptr %1064, align 8, !tbaa !11
  %1066 = and i64 %1063, %1065
  %1067 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1068 = load i64, ptr %1067, align 16, !tbaa !11
  %1069 = xor i64 %1068, -1
  %1070 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1071 = load i64, ptr %1070, align 16, !tbaa !11
  %1072 = and i64 %1069, %1071
  %1073 = xor i64 %1066, %1072
  %1074 = add i64 %1061, %1073
  %1075 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1076 = load i64, ptr %1075, align 8, !tbaa !11
  %1077 = add i64 %1076, %1074
  store i64 %1077, ptr %1075, align 8, !tbaa !11
  %1078 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1079 = load i64, ptr %1078, align 8, !tbaa !11
  %1080 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1081 = load i64, ptr %1080, align 8, !tbaa !11
  %1082 = add i64 %1081, %1079
  store i64 %1082, ptr %1080, align 8, !tbaa !11
  %1083 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1084 = load i64, ptr %1083, align 16, !tbaa !11
  %1085 = lshr i64 %1084, 28
  %1086 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1087 = load i64, ptr %1086, align 16, !tbaa !11
  %1088 = shl i64 %1087, 36
  %1089 = or i64 %1085, %1088
  %1090 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1091 = load i64, ptr %1090, align 16, !tbaa !11
  %1092 = lshr i64 %1091, 34
  %1093 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1094 = load i64, ptr %1093, align 16, !tbaa !11
  %1095 = shl i64 %1094, 30
  %1096 = or i64 %1092, %1095
  %1097 = xor i64 %1089, %1096
  %1098 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1099 = load i64, ptr %1098, align 16, !tbaa !11
  %1100 = lshr i64 %1099, 39
  %1101 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1102 = load i64, ptr %1101, align 16, !tbaa !11
  %1103 = shl i64 %1102, 25
  %1104 = or i64 %1100, %1103
  %1105 = xor i64 %1097, %1104
  %1106 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1107 = load i64, ptr %1106, align 16, !tbaa !11
  %1108 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1109 = load i64, ptr %1108, align 8, !tbaa !11
  %1110 = and i64 %1107, %1109
  %1111 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1112 = load i64, ptr %1111, align 16, !tbaa !11
  %1113 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1114 = load i64, ptr %1113, align 16, !tbaa !11
  %1115 = and i64 %1112, %1114
  %1116 = xor i64 %1110, %1115
  %1117 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1118 = load i64, ptr %1117, align 8, !tbaa !11
  %1119 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1120 = load i64, ptr %1119, align 16, !tbaa !11
  %1121 = and i64 %1118, %1120
  %1122 = xor i64 %1116, %1121
  %1123 = add i64 %1105, %1122
  %1124 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1125 = load i64, ptr %1124, align 8, !tbaa !11
  %1126 = add i64 %1125, %1123
  store i64 %1126, ptr %1124, align 8, !tbaa !11
  %1127 = load i32, ptr %13, align 4, !tbaa !9
  %1128 = icmp ne i32 %1127, 0
  br i1 %1128, label %1129, label %1175

1129:                                             ; preds = %1029
  %1130 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 5
  %1131 = load i64, ptr %1130, align 8, !tbaa !11
  %1132 = lshr i64 %1131, 19
  %1133 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 5
  %1134 = load i64, ptr %1133, align 8, !tbaa !11
  %1135 = shl i64 %1134, 45
  %1136 = or i64 %1132, %1135
  %1137 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 5
  %1138 = load i64, ptr %1137, align 8, !tbaa !11
  %1139 = lshr i64 %1138, 61
  %1140 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 5
  %1141 = load i64, ptr %1140, align 8, !tbaa !11
  %1142 = shl i64 %1141, 3
  %1143 = or i64 %1139, %1142
  %1144 = xor i64 %1136, %1143
  %1145 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 5
  %1146 = load i64, ptr %1145, align 8, !tbaa !11
  %1147 = lshr i64 %1146, 6
  %1148 = xor i64 %1144, %1147
  %1149 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 0
  %1150 = load i64, ptr %1149, align 16, !tbaa !11
  %1151 = add i64 %1148, %1150
  %1152 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 8
  %1153 = load i64, ptr %1152, align 16, !tbaa !11
  %1154 = lshr i64 %1153, 1
  %1155 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 8
  %1156 = load i64, ptr %1155, align 16, !tbaa !11
  %1157 = shl i64 %1156, 63
  %1158 = or i64 %1154, %1157
  %1159 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 8
  %1160 = load i64, ptr %1159, align 16, !tbaa !11
  %1161 = lshr i64 %1160, 8
  %1162 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 8
  %1163 = load i64, ptr %1162, align 16, !tbaa !11
  %1164 = shl i64 %1163, 56
  %1165 = or i64 %1161, %1164
  %1166 = xor i64 %1158, %1165
  %1167 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 8
  %1168 = load i64, ptr %1167, align 16, !tbaa !11
  %1169 = lshr i64 %1168, 7
  %1170 = xor i64 %1166, %1169
  %1171 = add i64 %1151, %1170
  %1172 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 7
  %1173 = load i64, ptr %1172, align 8, !tbaa !11
  %1174 = add i64 %1173, %1171
  store i64 %1174, ptr %1172, align 8, !tbaa !11
  br label %1178

1175:                                             ; preds = %1029
  %1176 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 7
  %1177 = load i64, ptr %1176, align 8, !tbaa !11
  br label %1178

1178:                                             ; preds = %1175, %1129
  %1179 = phi i64 [ %1174, %1129 ], [ %1177, %1175 ]
  %1180 = load ptr, ptr %11, align 8, !tbaa !5
  %1181 = load i32, ptr %13, align 4, !tbaa !9
  %1182 = add nsw i32 7, %1181
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds i64, ptr %1180, i64 %1183
  %1185 = load i64, ptr %1184, align 8, !tbaa !11
  %1186 = add i64 %1179, %1185
  %1187 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1188 = load i64, ptr %1187, align 8, !tbaa !11
  %1189 = lshr i64 %1188, 14
  %1190 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1191 = load i64, ptr %1190, align 8, !tbaa !11
  %1192 = shl i64 %1191, 50
  %1193 = or i64 %1189, %1192
  %1194 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1195 = load i64, ptr %1194, align 8, !tbaa !11
  %1196 = lshr i64 %1195, 18
  %1197 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1198 = load i64, ptr %1197, align 8, !tbaa !11
  %1199 = shl i64 %1198, 46
  %1200 = or i64 %1196, %1199
  %1201 = xor i64 %1193, %1200
  %1202 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1203 = load i64, ptr %1202, align 8, !tbaa !11
  %1204 = lshr i64 %1203, 41
  %1205 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1206 = load i64, ptr %1205, align 8, !tbaa !11
  %1207 = shl i64 %1206, 23
  %1208 = or i64 %1204, %1207
  %1209 = xor i64 %1201, %1208
  %1210 = add i64 %1186, %1209
  %1211 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1212 = load i64, ptr %1211, align 8, !tbaa !11
  %1213 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1214 = load i64, ptr %1213, align 16, !tbaa !11
  %1215 = and i64 %1212, %1214
  %1216 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1217 = load i64, ptr %1216, align 8, !tbaa !11
  %1218 = xor i64 %1217, -1
  %1219 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1220 = load i64, ptr %1219, align 8, !tbaa !11
  %1221 = and i64 %1218, %1220
  %1222 = xor i64 %1215, %1221
  %1223 = add i64 %1210, %1222
  %1224 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1225 = load i64, ptr %1224, align 16, !tbaa !11
  %1226 = add i64 %1225, %1223
  store i64 %1226, ptr %1224, align 16, !tbaa !11
  %1227 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1228 = load i64, ptr %1227, align 16, !tbaa !11
  %1229 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1230 = load i64, ptr %1229, align 16, !tbaa !11
  %1231 = add i64 %1230, %1228
  store i64 %1231, ptr %1229, align 16, !tbaa !11
  %1232 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1233 = load i64, ptr %1232, align 8, !tbaa !11
  %1234 = lshr i64 %1233, 28
  %1235 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1236 = load i64, ptr %1235, align 8, !tbaa !11
  %1237 = shl i64 %1236, 36
  %1238 = or i64 %1234, %1237
  %1239 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1240 = load i64, ptr %1239, align 8, !tbaa !11
  %1241 = lshr i64 %1240, 34
  %1242 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1243 = load i64, ptr %1242, align 8, !tbaa !11
  %1244 = shl i64 %1243, 30
  %1245 = or i64 %1241, %1244
  %1246 = xor i64 %1238, %1245
  %1247 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1248 = load i64, ptr %1247, align 8, !tbaa !11
  %1249 = lshr i64 %1248, 39
  %1250 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1251 = load i64, ptr %1250, align 8, !tbaa !11
  %1252 = shl i64 %1251, 25
  %1253 = or i64 %1249, %1252
  %1254 = xor i64 %1246, %1253
  %1255 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1256 = load i64, ptr %1255, align 8, !tbaa !11
  %1257 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1258 = load i64, ptr %1257, align 16, !tbaa !11
  %1259 = and i64 %1256, %1258
  %1260 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1261 = load i64, ptr %1260, align 8, !tbaa !11
  %1262 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1263 = load i64, ptr %1262, align 8, !tbaa !11
  %1264 = and i64 %1261, %1263
  %1265 = xor i64 %1259, %1264
  %1266 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1267 = load i64, ptr %1266, align 16, !tbaa !11
  %1268 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1269 = load i64, ptr %1268, align 8, !tbaa !11
  %1270 = and i64 %1267, %1269
  %1271 = xor i64 %1265, %1270
  %1272 = add i64 %1254, %1271
  %1273 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1274 = load i64, ptr %1273, align 16, !tbaa !11
  %1275 = add i64 %1274, %1272
  store i64 %1275, ptr %1273, align 16, !tbaa !11
  %1276 = load i32, ptr %13, align 4, !tbaa !9
  %1277 = icmp ne i32 %1276, 0
  br i1 %1277, label %1278, label %1324

1278:                                             ; preds = %1178
  %1279 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 6
  %1280 = load i64, ptr %1279, align 16, !tbaa !11
  %1281 = lshr i64 %1280, 19
  %1282 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 6
  %1283 = load i64, ptr %1282, align 16, !tbaa !11
  %1284 = shl i64 %1283, 45
  %1285 = or i64 %1281, %1284
  %1286 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 6
  %1287 = load i64, ptr %1286, align 16, !tbaa !11
  %1288 = lshr i64 %1287, 61
  %1289 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 6
  %1290 = load i64, ptr %1289, align 16, !tbaa !11
  %1291 = shl i64 %1290, 3
  %1292 = or i64 %1288, %1291
  %1293 = xor i64 %1285, %1292
  %1294 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 6
  %1295 = load i64, ptr %1294, align 16, !tbaa !11
  %1296 = lshr i64 %1295, 6
  %1297 = xor i64 %1293, %1296
  %1298 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 1
  %1299 = load i64, ptr %1298, align 8, !tbaa !11
  %1300 = add i64 %1297, %1299
  %1301 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 9
  %1302 = load i64, ptr %1301, align 8, !tbaa !11
  %1303 = lshr i64 %1302, 1
  %1304 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 9
  %1305 = load i64, ptr %1304, align 8, !tbaa !11
  %1306 = shl i64 %1305, 63
  %1307 = or i64 %1303, %1306
  %1308 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 9
  %1309 = load i64, ptr %1308, align 8, !tbaa !11
  %1310 = lshr i64 %1309, 8
  %1311 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 9
  %1312 = load i64, ptr %1311, align 8, !tbaa !11
  %1313 = shl i64 %1312, 56
  %1314 = or i64 %1310, %1313
  %1315 = xor i64 %1307, %1314
  %1316 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 9
  %1317 = load i64, ptr %1316, align 8, !tbaa !11
  %1318 = lshr i64 %1317, 7
  %1319 = xor i64 %1315, %1318
  %1320 = add i64 %1300, %1319
  %1321 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 8
  %1322 = load i64, ptr %1321, align 16, !tbaa !11
  %1323 = add i64 %1322, %1320
  store i64 %1323, ptr %1321, align 16, !tbaa !11
  br label %1327

1324:                                             ; preds = %1178
  %1325 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 8
  %1326 = load i64, ptr %1325, align 16, !tbaa !11
  br label %1327

1327:                                             ; preds = %1324, %1278
  %1328 = phi i64 [ %1323, %1278 ], [ %1326, %1324 ]
  %1329 = load ptr, ptr %11, align 8, !tbaa !5
  %1330 = load i32, ptr %13, align 4, !tbaa !9
  %1331 = add nsw i32 8, %1330
  %1332 = sext i32 %1331 to i64
  %1333 = getelementptr inbounds i64, ptr %1329, i64 %1332
  %1334 = load i64, ptr %1333, align 8, !tbaa !11
  %1335 = add i64 %1328, %1334
  %1336 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1337 = load i64, ptr %1336, align 16, !tbaa !11
  %1338 = lshr i64 %1337, 14
  %1339 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1340 = load i64, ptr %1339, align 16, !tbaa !11
  %1341 = shl i64 %1340, 50
  %1342 = or i64 %1338, %1341
  %1343 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1344 = load i64, ptr %1343, align 16, !tbaa !11
  %1345 = lshr i64 %1344, 18
  %1346 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1347 = load i64, ptr %1346, align 16, !tbaa !11
  %1348 = shl i64 %1347, 46
  %1349 = or i64 %1345, %1348
  %1350 = xor i64 %1342, %1349
  %1351 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1352 = load i64, ptr %1351, align 16, !tbaa !11
  %1353 = lshr i64 %1352, 41
  %1354 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1355 = load i64, ptr %1354, align 16, !tbaa !11
  %1356 = shl i64 %1355, 23
  %1357 = or i64 %1353, %1356
  %1358 = xor i64 %1350, %1357
  %1359 = add i64 %1335, %1358
  %1360 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1361 = load i64, ptr %1360, align 16, !tbaa !11
  %1362 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1363 = load i64, ptr %1362, align 8, !tbaa !11
  %1364 = and i64 %1361, %1363
  %1365 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1366 = load i64, ptr %1365, align 16, !tbaa !11
  %1367 = xor i64 %1366, -1
  %1368 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1369 = load i64, ptr %1368, align 16, !tbaa !11
  %1370 = and i64 %1367, %1369
  %1371 = xor i64 %1364, %1370
  %1372 = add i64 %1359, %1371
  %1373 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1374 = load i64, ptr %1373, align 8, !tbaa !11
  %1375 = add i64 %1374, %1372
  store i64 %1375, ptr %1373, align 8, !tbaa !11
  %1376 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1377 = load i64, ptr %1376, align 8, !tbaa !11
  %1378 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1379 = load i64, ptr %1378, align 8, !tbaa !11
  %1380 = add i64 %1379, %1377
  store i64 %1380, ptr %1378, align 8, !tbaa !11
  %1381 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1382 = load i64, ptr %1381, align 16, !tbaa !11
  %1383 = lshr i64 %1382, 28
  %1384 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1385 = load i64, ptr %1384, align 16, !tbaa !11
  %1386 = shl i64 %1385, 36
  %1387 = or i64 %1383, %1386
  %1388 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1389 = load i64, ptr %1388, align 16, !tbaa !11
  %1390 = lshr i64 %1389, 34
  %1391 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1392 = load i64, ptr %1391, align 16, !tbaa !11
  %1393 = shl i64 %1392, 30
  %1394 = or i64 %1390, %1393
  %1395 = xor i64 %1387, %1394
  %1396 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1397 = load i64, ptr %1396, align 16, !tbaa !11
  %1398 = lshr i64 %1397, 39
  %1399 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1400 = load i64, ptr %1399, align 16, !tbaa !11
  %1401 = shl i64 %1400, 25
  %1402 = or i64 %1398, %1401
  %1403 = xor i64 %1395, %1402
  %1404 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1405 = load i64, ptr %1404, align 16, !tbaa !11
  %1406 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1407 = load i64, ptr %1406, align 8, !tbaa !11
  %1408 = and i64 %1405, %1407
  %1409 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1410 = load i64, ptr %1409, align 16, !tbaa !11
  %1411 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1412 = load i64, ptr %1411, align 16, !tbaa !11
  %1413 = and i64 %1410, %1412
  %1414 = xor i64 %1408, %1413
  %1415 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1416 = load i64, ptr %1415, align 8, !tbaa !11
  %1417 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1418 = load i64, ptr %1417, align 16, !tbaa !11
  %1419 = and i64 %1416, %1418
  %1420 = xor i64 %1414, %1419
  %1421 = add i64 %1403, %1420
  %1422 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1423 = load i64, ptr %1422, align 8, !tbaa !11
  %1424 = add i64 %1423, %1421
  store i64 %1424, ptr %1422, align 8, !tbaa !11
  %1425 = load i32, ptr %13, align 4, !tbaa !9
  %1426 = icmp ne i32 %1425, 0
  br i1 %1426, label %1427, label %1473

1427:                                             ; preds = %1327
  %1428 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 7
  %1429 = load i64, ptr %1428, align 8, !tbaa !11
  %1430 = lshr i64 %1429, 19
  %1431 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 7
  %1432 = load i64, ptr %1431, align 8, !tbaa !11
  %1433 = shl i64 %1432, 45
  %1434 = or i64 %1430, %1433
  %1435 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 7
  %1436 = load i64, ptr %1435, align 8, !tbaa !11
  %1437 = lshr i64 %1436, 61
  %1438 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 7
  %1439 = load i64, ptr %1438, align 8, !tbaa !11
  %1440 = shl i64 %1439, 3
  %1441 = or i64 %1437, %1440
  %1442 = xor i64 %1434, %1441
  %1443 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 7
  %1444 = load i64, ptr %1443, align 8, !tbaa !11
  %1445 = lshr i64 %1444, 6
  %1446 = xor i64 %1442, %1445
  %1447 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 2
  %1448 = load i64, ptr %1447, align 16, !tbaa !11
  %1449 = add i64 %1446, %1448
  %1450 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 10
  %1451 = load i64, ptr %1450, align 16, !tbaa !11
  %1452 = lshr i64 %1451, 1
  %1453 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 10
  %1454 = load i64, ptr %1453, align 16, !tbaa !11
  %1455 = shl i64 %1454, 63
  %1456 = or i64 %1452, %1455
  %1457 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 10
  %1458 = load i64, ptr %1457, align 16, !tbaa !11
  %1459 = lshr i64 %1458, 8
  %1460 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 10
  %1461 = load i64, ptr %1460, align 16, !tbaa !11
  %1462 = shl i64 %1461, 56
  %1463 = or i64 %1459, %1462
  %1464 = xor i64 %1456, %1463
  %1465 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 10
  %1466 = load i64, ptr %1465, align 16, !tbaa !11
  %1467 = lshr i64 %1466, 7
  %1468 = xor i64 %1464, %1467
  %1469 = add i64 %1449, %1468
  %1470 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 9
  %1471 = load i64, ptr %1470, align 8, !tbaa !11
  %1472 = add i64 %1471, %1469
  store i64 %1472, ptr %1470, align 8, !tbaa !11
  br label %1476

1473:                                             ; preds = %1327
  %1474 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 9
  %1475 = load i64, ptr %1474, align 8, !tbaa !11
  br label %1476

1476:                                             ; preds = %1473, %1427
  %1477 = phi i64 [ %1472, %1427 ], [ %1475, %1473 ]
  %1478 = load ptr, ptr %11, align 8, !tbaa !5
  %1479 = load i32, ptr %13, align 4, !tbaa !9
  %1480 = add nsw i32 9, %1479
  %1481 = sext i32 %1480 to i64
  %1482 = getelementptr inbounds i64, ptr %1478, i64 %1481
  %1483 = load i64, ptr %1482, align 8, !tbaa !11
  %1484 = add i64 %1477, %1483
  %1485 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1486 = load i64, ptr %1485, align 8, !tbaa !11
  %1487 = lshr i64 %1486, 14
  %1488 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1489 = load i64, ptr %1488, align 8, !tbaa !11
  %1490 = shl i64 %1489, 50
  %1491 = or i64 %1487, %1490
  %1492 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1493 = load i64, ptr %1492, align 8, !tbaa !11
  %1494 = lshr i64 %1493, 18
  %1495 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1496 = load i64, ptr %1495, align 8, !tbaa !11
  %1497 = shl i64 %1496, 46
  %1498 = or i64 %1494, %1497
  %1499 = xor i64 %1491, %1498
  %1500 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1501 = load i64, ptr %1500, align 8, !tbaa !11
  %1502 = lshr i64 %1501, 41
  %1503 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1504 = load i64, ptr %1503, align 8, !tbaa !11
  %1505 = shl i64 %1504, 23
  %1506 = or i64 %1502, %1505
  %1507 = xor i64 %1499, %1506
  %1508 = add i64 %1484, %1507
  %1509 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1510 = load i64, ptr %1509, align 8, !tbaa !11
  %1511 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1512 = load i64, ptr %1511, align 16, !tbaa !11
  %1513 = and i64 %1510, %1512
  %1514 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1515 = load i64, ptr %1514, align 8, !tbaa !11
  %1516 = xor i64 %1515, -1
  %1517 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1518 = load i64, ptr %1517, align 8, !tbaa !11
  %1519 = and i64 %1516, %1518
  %1520 = xor i64 %1513, %1519
  %1521 = add i64 %1508, %1520
  %1522 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1523 = load i64, ptr %1522, align 16, !tbaa !11
  %1524 = add i64 %1523, %1521
  store i64 %1524, ptr %1522, align 16, !tbaa !11
  %1525 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1526 = load i64, ptr %1525, align 16, !tbaa !11
  %1527 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1528 = load i64, ptr %1527, align 16, !tbaa !11
  %1529 = add i64 %1528, %1526
  store i64 %1529, ptr %1527, align 16, !tbaa !11
  %1530 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1531 = load i64, ptr %1530, align 8, !tbaa !11
  %1532 = lshr i64 %1531, 28
  %1533 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1534 = load i64, ptr %1533, align 8, !tbaa !11
  %1535 = shl i64 %1534, 36
  %1536 = or i64 %1532, %1535
  %1537 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1538 = load i64, ptr %1537, align 8, !tbaa !11
  %1539 = lshr i64 %1538, 34
  %1540 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1541 = load i64, ptr %1540, align 8, !tbaa !11
  %1542 = shl i64 %1541, 30
  %1543 = or i64 %1539, %1542
  %1544 = xor i64 %1536, %1543
  %1545 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1546 = load i64, ptr %1545, align 8, !tbaa !11
  %1547 = lshr i64 %1546, 39
  %1548 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1549 = load i64, ptr %1548, align 8, !tbaa !11
  %1550 = shl i64 %1549, 25
  %1551 = or i64 %1547, %1550
  %1552 = xor i64 %1544, %1551
  %1553 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1554 = load i64, ptr %1553, align 8, !tbaa !11
  %1555 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1556 = load i64, ptr %1555, align 16, !tbaa !11
  %1557 = and i64 %1554, %1556
  %1558 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1559 = load i64, ptr %1558, align 8, !tbaa !11
  %1560 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1561 = load i64, ptr %1560, align 8, !tbaa !11
  %1562 = and i64 %1559, %1561
  %1563 = xor i64 %1557, %1562
  %1564 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1565 = load i64, ptr %1564, align 16, !tbaa !11
  %1566 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1567 = load i64, ptr %1566, align 8, !tbaa !11
  %1568 = and i64 %1565, %1567
  %1569 = xor i64 %1563, %1568
  %1570 = add i64 %1552, %1569
  %1571 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1572 = load i64, ptr %1571, align 16, !tbaa !11
  %1573 = add i64 %1572, %1570
  store i64 %1573, ptr %1571, align 16, !tbaa !11
  %1574 = load i32, ptr %13, align 4, !tbaa !9
  %1575 = icmp ne i32 %1574, 0
  br i1 %1575, label %1576, label %1622

1576:                                             ; preds = %1476
  %1577 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 8
  %1578 = load i64, ptr %1577, align 16, !tbaa !11
  %1579 = lshr i64 %1578, 19
  %1580 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 8
  %1581 = load i64, ptr %1580, align 16, !tbaa !11
  %1582 = shl i64 %1581, 45
  %1583 = or i64 %1579, %1582
  %1584 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 8
  %1585 = load i64, ptr %1584, align 16, !tbaa !11
  %1586 = lshr i64 %1585, 61
  %1587 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 8
  %1588 = load i64, ptr %1587, align 16, !tbaa !11
  %1589 = shl i64 %1588, 3
  %1590 = or i64 %1586, %1589
  %1591 = xor i64 %1583, %1590
  %1592 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 8
  %1593 = load i64, ptr %1592, align 16, !tbaa !11
  %1594 = lshr i64 %1593, 6
  %1595 = xor i64 %1591, %1594
  %1596 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 3
  %1597 = load i64, ptr %1596, align 8, !tbaa !11
  %1598 = add i64 %1595, %1597
  %1599 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 11
  %1600 = load i64, ptr %1599, align 8, !tbaa !11
  %1601 = lshr i64 %1600, 1
  %1602 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 11
  %1603 = load i64, ptr %1602, align 8, !tbaa !11
  %1604 = shl i64 %1603, 63
  %1605 = or i64 %1601, %1604
  %1606 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 11
  %1607 = load i64, ptr %1606, align 8, !tbaa !11
  %1608 = lshr i64 %1607, 8
  %1609 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 11
  %1610 = load i64, ptr %1609, align 8, !tbaa !11
  %1611 = shl i64 %1610, 56
  %1612 = or i64 %1608, %1611
  %1613 = xor i64 %1605, %1612
  %1614 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 11
  %1615 = load i64, ptr %1614, align 8, !tbaa !11
  %1616 = lshr i64 %1615, 7
  %1617 = xor i64 %1613, %1616
  %1618 = add i64 %1598, %1617
  %1619 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 10
  %1620 = load i64, ptr %1619, align 16, !tbaa !11
  %1621 = add i64 %1620, %1618
  store i64 %1621, ptr %1619, align 16, !tbaa !11
  br label %1625

1622:                                             ; preds = %1476
  %1623 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 10
  %1624 = load i64, ptr %1623, align 16, !tbaa !11
  br label %1625

1625:                                             ; preds = %1622, %1576
  %1626 = phi i64 [ %1621, %1576 ], [ %1624, %1622 ]
  %1627 = load ptr, ptr %11, align 8, !tbaa !5
  %1628 = load i32, ptr %13, align 4, !tbaa !9
  %1629 = add nsw i32 10, %1628
  %1630 = sext i32 %1629 to i64
  %1631 = getelementptr inbounds i64, ptr %1627, i64 %1630
  %1632 = load i64, ptr %1631, align 8, !tbaa !11
  %1633 = add i64 %1626, %1632
  %1634 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1635 = load i64, ptr %1634, align 16, !tbaa !11
  %1636 = lshr i64 %1635, 14
  %1637 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1638 = load i64, ptr %1637, align 16, !tbaa !11
  %1639 = shl i64 %1638, 50
  %1640 = or i64 %1636, %1639
  %1641 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1642 = load i64, ptr %1641, align 16, !tbaa !11
  %1643 = lshr i64 %1642, 18
  %1644 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1645 = load i64, ptr %1644, align 16, !tbaa !11
  %1646 = shl i64 %1645, 46
  %1647 = or i64 %1643, %1646
  %1648 = xor i64 %1640, %1647
  %1649 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1650 = load i64, ptr %1649, align 16, !tbaa !11
  %1651 = lshr i64 %1650, 41
  %1652 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1653 = load i64, ptr %1652, align 16, !tbaa !11
  %1654 = shl i64 %1653, 23
  %1655 = or i64 %1651, %1654
  %1656 = xor i64 %1648, %1655
  %1657 = add i64 %1633, %1656
  %1658 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1659 = load i64, ptr %1658, align 16, !tbaa !11
  %1660 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1661 = load i64, ptr %1660, align 8, !tbaa !11
  %1662 = and i64 %1659, %1661
  %1663 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1664 = load i64, ptr %1663, align 16, !tbaa !11
  %1665 = xor i64 %1664, -1
  %1666 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1667 = load i64, ptr %1666, align 16, !tbaa !11
  %1668 = and i64 %1665, %1667
  %1669 = xor i64 %1662, %1668
  %1670 = add i64 %1657, %1669
  %1671 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1672 = load i64, ptr %1671, align 8, !tbaa !11
  %1673 = add i64 %1672, %1670
  store i64 %1673, ptr %1671, align 8, !tbaa !11
  %1674 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1675 = load i64, ptr %1674, align 8, !tbaa !11
  %1676 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1677 = load i64, ptr %1676, align 8, !tbaa !11
  %1678 = add i64 %1677, %1675
  store i64 %1678, ptr %1676, align 8, !tbaa !11
  %1679 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1680 = load i64, ptr %1679, align 16, !tbaa !11
  %1681 = lshr i64 %1680, 28
  %1682 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1683 = load i64, ptr %1682, align 16, !tbaa !11
  %1684 = shl i64 %1683, 36
  %1685 = or i64 %1681, %1684
  %1686 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1687 = load i64, ptr %1686, align 16, !tbaa !11
  %1688 = lshr i64 %1687, 34
  %1689 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1690 = load i64, ptr %1689, align 16, !tbaa !11
  %1691 = shl i64 %1690, 30
  %1692 = or i64 %1688, %1691
  %1693 = xor i64 %1685, %1692
  %1694 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1695 = load i64, ptr %1694, align 16, !tbaa !11
  %1696 = lshr i64 %1695, 39
  %1697 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1698 = load i64, ptr %1697, align 16, !tbaa !11
  %1699 = shl i64 %1698, 25
  %1700 = or i64 %1696, %1699
  %1701 = xor i64 %1693, %1700
  %1702 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1703 = load i64, ptr %1702, align 16, !tbaa !11
  %1704 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1705 = load i64, ptr %1704, align 8, !tbaa !11
  %1706 = and i64 %1703, %1705
  %1707 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1708 = load i64, ptr %1707, align 16, !tbaa !11
  %1709 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1710 = load i64, ptr %1709, align 16, !tbaa !11
  %1711 = and i64 %1708, %1710
  %1712 = xor i64 %1706, %1711
  %1713 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1714 = load i64, ptr %1713, align 8, !tbaa !11
  %1715 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1716 = load i64, ptr %1715, align 16, !tbaa !11
  %1717 = and i64 %1714, %1716
  %1718 = xor i64 %1712, %1717
  %1719 = add i64 %1701, %1718
  %1720 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1721 = load i64, ptr %1720, align 8, !tbaa !11
  %1722 = add i64 %1721, %1719
  store i64 %1722, ptr %1720, align 8, !tbaa !11
  %1723 = load i32, ptr %13, align 4, !tbaa !9
  %1724 = icmp ne i32 %1723, 0
  br i1 %1724, label %1725, label %1771

1725:                                             ; preds = %1625
  %1726 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 9
  %1727 = load i64, ptr %1726, align 8, !tbaa !11
  %1728 = lshr i64 %1727, 19
  %1729 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 9
  %1730 = load i64, ptr %1729, align 8, !tbaa !11
  %1731 = shl i64 %1730, 45
  %1732 = or i64 %1728, %1731
  %1733 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 9
  %1734 = load i64, ptr %1733, align 8, !tbaa !11
  %1735 = lshr i64 %1734, 61
  %1736 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 9
  %1737 = load i64, ptr %1736, align 8, !tbaa !11
  %1738 = shl i64 %1737, 3
  %1739 = or i64 %1735, %1738
  %1740 = xor i64 %1732, %1739
  %1741 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 9
  %1742 = load i64, ptr %1741, align 8, !tbaa !11
  %1743 = lshr i64 %1742, 6
  %1744 = xor i64 %1740, %1743
  %1745 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 4
  %1746 = load i64, ptr %1745, align 16, !tbaa !11
  %1747 = add i64 %1744, %1746
  %1748 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 12
  %1749 = load i64, ptr %1748, align 16, !tbaa !11
  %1750 = lshr i64 %1749, 1
  %1751 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 12
  %1752 = load i64, ptr %1751, align 16, !tbaa !11
  %1753 = shl i64 %1752, 63
  %1754 = or i64 %1750, %1753
  %1755 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 12
  %1756 = load i64, ptr %1755, align 16, !tbaa !11
  %1757 = lshr i64 %1756, 8
  %1758 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 12
  %1759 = load i64, ptr %1758, align 16, !tbaa !11
  %1760 = shl i64 %1759, 56
  %1761 = or i64 %1757, %1760
  %1762 = xor i64 %1754, %1761
  %1763 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 12
  %1764 = load i64, ptr %1763, align 16, !tbaa !11
  %1765 = lshr i64 %1764, 7
  %1766 = xor i64 %1762, %1765
  %1767 = add i64 %1747, %1766
  %1768 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 11
  %1769 = load i64, ptr %1768, align 8, !tbaa !11
  %1770 = add i64 %1769, %1767
  store i64 %1770, ptr %1768, align 8, !tbaa !11
  br label %1774

1771:                                             ; preds = %1625
  %1772 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 11
  %1773 = load i64, ptr %1772, align 8, !tbaa !11
  br label %1774

1774:                                             ; preds = %1771, %1725
  %1775 = phi i64 [ %1770, %1725 ], [ %1773, %1771 ]
  %1776 = load ptr, ptr %11, align 8, !tbaa !5
  %1777 = load i32, ptr %13, align 4, !tbaa !9
  %1778 = add nsw i32 11, %1777
  %1779 = sext i32 %1778 to i64
  %1780 = getelementptr inbounds i64, ptr %1776, i64 %1779
  %1781 = load i64, ptr %1780, align 8, !tbaa !11
  %1782 = add i64 %1775, %1781
  %1783 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1784 = load i64, ptr %1783, align 8, !tbaa !11
  %1785 = lshr i64 %1784, 14
  %1786 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1787 = load i64, ptr %1786, align 8, !tbaa !11
  %1788 = shl i64 %1787, 50
  %1789 = or i64 %1785, %1788
  %1790 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1791 = load i64, ptr %1790, align 8, !tbaa !11
  %1792 = lshr i64 %1791, 18
  %1793 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1794 = load i64, ptr %1793, align 8, !tbaa !11
  %1795 = shl i64 %1794, 46
  %1796 = or i64 %1792, %1795
  %1797 = xor i64 %1789, %1796
  %1798 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1799 = load i64, ptr %1798, align 8, !tbaa !11
  %1800 = lshr i64 %1799, 41
  %1801 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1802 = load i64, ptr %1801, align 8, !tbaa !11
  %1803 = shl i64 %1802, 23
  %1804 = or i64 %1800, %1803
  %1805 = xor i64 %1797, %1804
  %1806 = add i64 %1782, %1805
  %1807 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1808 = load i64, ptr %1807, align 8, !tbaa !11
  %1809 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1810 = load i64, ptr %1809, align 16, !tbaa !11
  %1811 = and i64 %1808, %1810
  %1812 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1813 = load i64, ptr %1812, align 8, !tbaa !11
  %1814 = xor i64 %1813, -1
  %1815 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1816 = load i64, ptr %1815, align 8, !tbaa !11
  %1817 = and i64 %1814, %1816
  %1818 = xor i64 %1811, %1817
  %1819 = add i64 %1806, %1818
  %1820 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1821 = load i64, ptr %1820, align 16, !tbaa !11
  %1822 = add i64 %1821, %1819
  store i64 %1822, ptr %1820, align 16, !tbaa !11
  %1823 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1824 = load i64, ptr %1823, align 16, !tbaa !11
  %1825 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1826 = load i64, ptr %1825, align 16, !tbaa !11
  %1827 = add i64 %1826, %1824
  store i64 %1827, ptr %1825, align 16, !tbaa !11
  %1828 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1829 = load i64, ptr %1828, align 8, !tbaa !11
  %1830 = lshr i64 %1829, 28
  %1831 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1832 = load i64, ptr %1831, align 8, !tbaa !11
  %1833 = shl i64 %1832, 36
  %1834 = or i64 %1830, %1833
  %1835 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1836 = load i64, ptr %1835, align 8, !tbaa !11
  %1837 = lshr i64 %1836, 34
  %1838 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1839 = load i64, ptr %1838, align 8, !tbaa !11
  %1840 = shl i64 %1839, 30
  %1841 = or i64 %1837, %1840
  %1842 = xor i64 %1834, %1841
  %1843 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1844 = load i64, ptr %1843, align 8, !tbaa !11
  %1845 = lshr i64 %1844, 39
  %1846 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1847 = load i64, ptr %1846, align 8, !tbaa !11
  %1848 = shl i64 %1847, 25
  %1849 = or i64 %1845, %1848
  %1850 = xor i64 %1842, %1849
  %1851 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1852 = load i64, ptr %1851, align 8, !tbaa !11
  %1853 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1854 = load i64, ptr %1853, align 16, !tbaa !11
  %1855 = and i64 %1852, %1854
  %1856 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %1857 = load i64, ptr %1856, align 8, !tbaa !11
  %1858 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1859 = load i64, ptr %1858, align 8, !tbaa !11
  %1860 = and i64 %1857, %1859
  %1861 = xor i64 %1855, %1860
  %1862 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %1863 = load i64, ptr %1862, align 16, !tbaa !11
  %1864 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1865 = load i64, ptr %1864, align 8, !tbaa !11
  %1866 = and i64 %1863, %1865
  %1867 = xor i64 %1861, %1866
  %1868 = add i64 %1850, %1867
  %1869 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1870 = load i64, ptr %1869, align 16, !tbaa !11
  %1871 = add i64 %1870, %1868
  store i64 %1871, ptr %1869, align 16, !tbaa !11
  %1872 = load i32, ptr %13, align 4, !tbaa !9
  %1873 = icmp ne i32 %1872, 0
  br i1 %1873, label %1874, label %1920

1874:                                             ; preds = %1774
  %1875 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 10
  %1876 = load i64, ptr %1875, align 16, !tbaa !11
  %1877 = lshr i64 %1876, 19
  %1878 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 10
  %1879 = load i64, ptr %1878, align 16, !tbaa !11
  %1880 = shl i64 %1879, 45
  %1881 = or i64 %1877, %1880
  %1882 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 10
  %1883 = load i64, ptr %1882, align 16, !tbaa !11
  %1884 = lshr i64 %1883, 61
  %1885 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 10
  %1886 = load i64, ptr %1885, align 16, !tbaa !11
  %1887 = shl i64 %1886, 3
  %1888 = or i64 %1884, %1887
  %1889 = xor i64 %1881, %1888
  %1890 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 10
  %1891 = load i64, ptr %1890, align 16, !tbaa !11
  %1892 = lshr i64 %1891, 6
  %1893 = xor i64 %1889, %1892
  %1894 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 5
  %1895 = load i64, ptr %1894, align 8, !tbaa !11
  %1896 = add i64 %1893, %1895
  %1897 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 13
  %1898 = load i64, ptr %1897, align 8, !tbaa !11
  %1899 = lshr i64 %1898, 1
  %1900 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 13
  %1901 = load i64, ptr %1900, align 8, !tbaa !11
  %1902 = shl i64 %1901, 63
  %1903 = or i64 %1899, %1902
  %1904 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 13
  %1905 = load i64, ptr %1904, align 8, !tbaa !11
  %1906 = lshr i64 %1905, 8
  %1907 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 13
  %1908 = load i64, ptr %1907, align 8, !tbaa !11
  %1909 = shl i64 %1908, 56
  %1910 = or i64 %1906, %1909
  %1911 = xor i64 %1903, %1910
  %1912 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 13
  %1913 = load i64, ptr %1912, align 8, !tbaa !11
  %1914 = lshr i64 %1913, 7
  %1915 = xor i64 %1911, %1914
  %1916 = add i64 %1896, %1915
  %1917 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 12
  %1918 = load i64, ptr %1917, align 16, !tbaa !11
  %1919 = add i64 %1918, %1916
  store i64 %1919, ptr %1917, align 16, !tbaa !11
  br label %1923

1920:                                             ; preds = %1774
  %1921 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 12
  %1922 = load i64, ptr %1921, align 16, !tbaa !11
  br label %1923

1923:                                             ; preds = %1920, %1874
  %1924 = phi i64 [ %1919, %1874 ], [ %1922, %1920 ]
  %1925 = load ptr, ptr %11, align 8, !tbaa !5
  %1926 = load i32, ptr %13, align 4, !tbaa !9
  %1927 = add nsw i32 12, %1926
  %1928 = sext i32 %1927 to i64
  %1929 = getelementptr inbounds i64, ptr %1925, i64 %1928
  %1930 = load i64, ptr %1929, align 8, !tbaa !11
  %1931 = add i64 %1924, %1930
  %1932 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1933 = load i64, ptr %1932, align 16, !tbaa !11
  %1934 = lshr i64 %1933, 14
  %1935 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1936 = load i64, ptr %1935, align 16, !tbaa !11
  %1937 = shl i64 %1936, 50
  %1938 = or i64 %1934, %1937
  %1939 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1940 = load i64, ptr %1939, align 16, !tbaa !11
  %1941 = lshr i64 %1940, 18
  %1942 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1943 = load i64, ptr %1942, align 16, !tbaa !11
  %1944 = shl i64 %1943, 46
  %1945 = or i64 %1941, %1944
  %1946 = xor i64 %1938, %1945
  %1947 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1948 = load i64, ptr %1947, align 16, !tbaa !11
  %1949 = lshr i64 %1948, 41
  %1950 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1951 = load i64, ptr %1950, align 16, !tbaa !11
  %1952 = shl i64 %1951, 23
  %1953 = or i64 %1949, %1952
  %1954 = xor i64 %1946, %1953
  %1955 = add i64 %1931, %1954
  %1956 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1957 = load i64, ptr %1956, align 16, !tbaa !11
  %1958 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %1959 = load i64, ptr %1958, align 8, !tbaa !11
  %1960 = and i64 %1957, %1959
  %1961 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %1962 = load i64, ptr %1961, align 16, !tbaa !11
  %1963 = xor i64 %1962, -1
  %1964 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %1965 = load i64, ptr %1964, align 16, !tbaa !11
  %1966 = and i64 %1963, %1965
  %1967 = xor i64 %1960, %1966
  %1968 = add i64 %1955, %1967
  %1969 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1970 = load i64, ptr %1969, align 8, !tbaa !11
  %1971 = add i64 %1970, %1968
  store i64 %1971, ptr %1969, align 8, !tbaa !11
  %1972 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %1973 = load i64, ptr %1972, align 8, !tbaa !11
  %1974 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %1975 = load i64, ptr %1974, align 8, !tbaa !11
  %1976 = add i64 %1975, %1973
  store i64 %1976, ptr %1974, align 8, !tbaa !11
  %1977 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1978 = load i64, ptr %1977, align 16, !tbaa !11
  %1979 = lshr i64 %1978, 28
  %1980 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1981 = load i64, ptr %1980, align 16, !tbaa !11
  %1982 = shl i64 %1981, 36
  %1983 = or i64 %1979, %1982
  %1984 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1985 = load i64, ptr %1984, align 16, !tbaa !11
  %1986 = lshr i64 %1985, 34
  %1987 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1988 = load i64, ptr %1987, align 16, !tbaa !11
  %1989 = shl i64 %1988, 30
  %1990 = or i64 %1986, %1989
  %1991 = xor i64 %1983, %1990
  %1992 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1993 = load i64, ptr %1992, align 16, !tbaa !11
  %1994 = lshr i64 %1993, 39
  %1995 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %1996 = load i64, ptr %1995, align 16, !tbaa !11
  %1997 = shl i64 %1996, 25
  %1998 = or i64 %1994, %1997
  %1999 = xor i64 %1991, %1998
  %2000 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %2001 = load i64, ptr %2000, align 16, !tbaa !11
  %2002 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %2003 = load i64, ptr %2002, align 8, !tbaa !11
  %2004 = and i64 %2001, %2003
  %2005 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %2006 = load i64, ptr %2005, align 16, !tbaa !11
  %2007 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %2008 = load i64, ptr %2007, align 16, !tbaa !11
  %2009 = and i64 %2006, %2008
  %2010 = xor i64 %2004, %2009
  %2011 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %2012 = load i64, ptr %2011, align 8, !tbaa !11
  %2013 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %2014 = load i64, ptr %2013, align 16, !tbaa !11
  %2015 = and i64 %2012, %2014
  %2016 = xor i64 %2010, %2015
  %2017 = add i64 %1999, %2016
  %2018 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %2019 = load i64, ptr %2018, align 8, !tbaa !11
  %2020 = add i64 %2019, %2017
  store i64 %2020, ptr %2018, align 8, !tbaa !11
  %2021 = load i32, ptr %13, align 4, !tbaa !9
  %2022 = icmp ne i32 %2021, 0
  br i1 %2022, label %2023, label %2069

2023:                                             ; preds = %1923
  %2024 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 11
  %2025 = load i64, ptr %2024, align 8, !tbaa !11
  %2026 = lshr i64 %2025, 19
  %2027 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 11
  %2028 = load i64, ptr %2027, align 8, !tbaa !11
  %2029 = shl i64 %2028, 45
  %2030 = or i64 %2026, %2029
  %2031 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 11
  %2032 = load i64, ptr %2031, align 8, !tbaa !11
  %2033 = lshr i64 %2032, 61
  %2034 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 11
  %2035 = load i64, ptr %2034, align 8, !tbaa !11
  %2036 = shl i64 %2035, 3
  %2037 = or i64 %2033, %2036
  %2038 = xor i64 %2030, %2037
  %2039 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 11
  %2040 = load i64, ptr %2039, align 8, !tbaa !11
  %2041 = lshr i64 %2040, 6
  %2042 = xor i64 %2038, %2041
  %2043 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 6
  %2044 = load i64, ptr %2043, align 16, !tbaa !11
  %2045 = add i64 %2042, %2044
  %2046 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 14
  %2047 = load i64, ptr %2046, align 16, !tbaa !11
  %2048 = lshr i64 %2047, 1
  %2049 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 14
  %2050 = load i64, ptr %2049, align 16, !tbaa !11
  %2051 = shl i64 %2050, 63
  %2052 = or i64 %2048, %2051
  %2053 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 14
  %2054 = load i64, ptr %2053, align 16, !tbaa !11
  %2055 = lshr i64 %2054, 8
  %2056 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 14
  %2057 = load i64, ptr %2056, align 16, !tbaa !11
  %2058 = shl i64 %2057, 56
  %2059 = or i64 %2055, %2058
  %2060 = xor i64 %2052, %2059
  %2061 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 14
  %2062 = load i64, ptr %2061, align 16, !tbaa !11
  %2063 = lshr i64 %2062, 7
  %2064 = xor i64 %2060, %2063
  %2065 = add i64 %2045, %2064
  %2066 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 13
  %2067 = load i64, ptr %2066, align 8, !tbaa !11
  %2068 = add i64 %2067, %2065
  store i64 %2068, ptr %2066, align 8, !tbaa !11
  br label %2072

2069:                                             ; preds = %1923
  %2070 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 13
  %2071 = load i64, ptr %2070, align 8, !tbaa !11
  br label %2072

2072:                                             ; preds = %2069, %2023
  %2073 = phi i64 [ %2068, %2023 ], [ %2071, %2069 ]
  %2074 = load ptr, ptr %11, align 8, !tbaa !5
  %2075 = load i32, ptr %13, align 4, !tbaa !9
  %2076 = add nsw i32 13, %2075
  %2077 = sext i32 %2076 to i64
  %2078 = getelementptr inbounds i64, ptr %2074, i64 %2077
  %2079 = load i64, ptr %2078, align 8, !tbaa !11
  %2080 = add i64 %2073, %2079
  %2081 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %2082 = load i64, ptr %2081, align 8, !tbaa !11
  %2083 = lshr i64 %2082, 14
  %2084 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %2085 = load i64, ptr %2084, align 8, !tbaa !11
  %2086 = shl i64 %2085, 50
  %2087 = or i64 %2083, %2086
  %2088 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %2089 = load i64, ptr %2088, align 8, !tbaa !11
  %2090 = lshr i64 %2089, 18
  %2091 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %2092 = load i64, ptr %2091, align 8, !tbaa !11
  %2093 = shl i64 %2092, 46
  %2094 = or i64 %2090, %2093
  %2095 = xor i64 %2087, %2094
  %2096 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %2097 = load i64, ptr %2096, align 8, !tbaa !11
  %2098 = lshr i64 %2097, 41
  %2099 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %2100 = load i64, ptr %2099, align 8, !tbaa !11
  %2101 = shl i64 %2100, 23
  %2102 = or i64 %2098, %2101
  %2103 = xor i64 %2095, %2102
  %2104 = add i64 %2080, %2103
  %2105 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %2106 = load i64, ptr %2105, align 8, !tbaa !11
  %2107 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %2108 = load i64, ptr %2107, align 16, !tbaa !11
  %2109 = and i64 %2106, %2108
  %2110 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %2111 = load i64, ptr %2110, align 8, !tbaa !11
  %2112 = xor i64 %2111, -1
  %2113 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %2114 = load i64, ptr %2113, align 8, !tbaa !11
  %2115 = and i64 %2112, %2114
  %2116 = xor i64 %2109, %2115
  %2117 = add i64 %2104, %2116
  %2118 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %2119 = load i64, ptr %2118, align 16, !tbaa !11
  %2120 = add i64 %2119, %2117
  store i64 %2120, ptr %2118, align 16, !tbaa !11
  %2121 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %2122 = load i64, ptr %2121, align 16, !tbaa !11
  %2123 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %2124 = load i64, ptr %2123, align 16, !tbaa !11
  %2125 = add i64 %2124, %2122
  store i64 %2125, ptr %2123, align 16, !tbaa !11
  %2126 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %2127 = load i64, ptr %2126, align 8, !tbaa !11
  %2128 = lshr i64 %2127, 28
  %2129 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %2130 = load i64, ptr %2129, align 8, !tbaa !11
  %2131 = shl i64 %2130, 36
  %2132 = or i64 %2128, %2131
  %2133 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %2134 = load i64, ptr %2133, align 8, !tbaa !11
  %2135 = lshr i64 %2134, 34
  %2136 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %2137 = load i64, ptr %2136, align 8, !tbaa !11
  %2138 = shl i64 %2137, 30
  %2139 = or i64 %2135, %2138
  %2140 = xor i64 %2132, %2139
  %2141 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %2142 = load i64, ptr %2141, align 8, !tbaa !11
  %2143 = lshr i64 %2142, 39
  %2144 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %2145 = load i64, ptr %2144, align 8, !tbaa !11
  %2146 = shl i64 %2145, 25
  %2147 = or i64 %2143, %2146
  %2148 = xor i64 %2140, %2147
  %2149 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %2150 = load i64, ptr %2149, align 8, !tbaa !11
  %2151 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %2152 = load i64, ptr %2151, align 16, !tbaa !11
  %2153 = and i64 %2150, %2152
  %2154 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %2155 = load i64, ptr %2154, align 8, !tbaa !11
  %2156 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %2157 = load i64, ptr %2156, align 8, !tbaa !11
  %2158 = and i64 %2155, %2157
  %2159 = xor i64 %2153, %2158
  %2160 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %2161 = load i64, ptr %2160, align 16, !tbaa !11
  %2162 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %2163 = load i64, ptr %2162, align 8, !tbaa !11
  %2164 = and i64 %2161, %2163
  %2165 = xor i64 %2159, %2164
  %2166 = add i64 %2148, %2165
  %2167 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %2168 = load i64, ptr %2167, align 16, !tbaa !11
  %2169 = add i64 %2168, %2166
  store i64 %2169, ptr %2167, align 16, !tbaa !11
  %2170 = load i32, ptr %13, align 4, !tbaa !9
  %2171 = icmp ne i32 %2170, 0
  br i1 %2171, label %2172, label %2218

2172:                                             ; preds = %2072
  %2173 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 12
  %2174 = load i64, ptr %2173, align 16, !tbaa !11
  %2175 = lshr i64 %2174, 19
  %2176 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 12
  %2177 = load i64, ptr %2176, align 16, !tbaa !11
  %2178 = shl i64 %2177, 45
  %2179 = or i64 %2175, %2178
  %2180 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 12
  %2181 = load i64, ptr %2180, align 16, !tbaa !11
  %2182 = lshr i64 %2181, 61
  %2183 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 12
  %2184 = load i64, ptr %2183, align 16, !tbaa !11
  %2185 = shl i64 %2184, 3
  %2186 = or i64 %2182, %2185
  %2187 = xor i64 %2179, %2186
  %2188 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 12
  %2189 = load i64, ptr %2188, align 16, !tbaa !11
  %2190 = lshr i64 %2189, 6
  %2191 = xor i64 %2187, %2190
  %2192 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 7
  %2193 = load i64, ptr %2192, align 8, !tbaa !11
  %2194 = add i64 %2191, %2193
  %2195 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 15
  %2196 = load i64, ptr %2195, align 8, !tbaa !11
  %2197 = lshr i64 %2196, 1
  %2198 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 15
  %2199 = load i64, ptr %2198, align 8, !tbaa !11
  %2200 = shl i64 %2199, 63
  %2201 = or i64 %2197, %2200
  %2202 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 15
  %2203 = load i64, ptr %2202, align 8, !tbaa !11
  %2204 = lshr i64 %2203, 8
  %2205 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 15
  %2206 = load i64, ptr %2205, align 8, !tbaa !11
  %2207 = shl i64 %2206, 56
  %2208 = or i64 %2204, %2207
  %2209 = xor i64 %2201, %2208
  %2210 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 15
  %2211 = load i64, ptr %2210, align 8, !tbaa !11
  %2212 = lshr i64 %2211, 7
  %2213 = xor i64 %2209, %2212
  %2214 = add i64 %2194, %2213
  %2215 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 14
  %2216 = load i64, ptr %2215, align 16, !tbaa !11
  %2217 = add i64 %2216, %2214
  store i64 %2217, ptr %2215, align 16, !tbaa !11
  br label %2221

2218:                                             ; preds = %2072
  %2219 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 14
  %2220 = load i64, ptr %2219, align 16, !tbaa !11
  br label %2221

2221:                                             ; preds = %2218, %2172
  %2222 = phi i64 [ %2217, %2172 ], [ %2220, %2218 ]
  %2223 = load ptr, ptr %11, align 8, !tbaa !5
  %2224 = load i32, ptr %13, align 4, !tbaa !9
  %2225 = add nsw i32 14, %2224
  %2226 = sext i32 %2225 to i64
  %2227 = getelementptr inbounds i64, ptr %2223, i64 %2226
  %2228 = load i64, ptr %2227, align 8, !tbaa !11
  %2229 = add i64 %2222, %2228
  %2230 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %2231 = load i64, ptr %2230, align 16, !tbaa !11
  %2232 = lshr i64 %2231, 14
  %2233 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %2234 = load i64, ptr %2233, align 16, !tbaa !11
  %2235 = shl i64 %2234, 50
  %2236 = or i64 %2232, %2235
  %2237 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %2238 = load i64, ptr %2237, align 16, !tbaa !11
  %2239 = lshr i64 %2238, 18
  %2240 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %2241 = load i64, ptr %2240, align 16, !tbaa !11
  %2242 = shl i64 %2241, 46
  %2243 = or i64 %2239, %2242
  %2244 = xor i64 %2236, %2243
  %2245 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %2246 = load i64, ptr %2245, align 16, !tbaa !11
  %2247 = lshr i64 %2246, 41
  %2248 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %2249 = load i64, ptr %2248, align 16, !tbaa !11
  %2250 = shl i64 %2249, 23
  %2251 = or i64 %2247, %2250
  %2252 = xor i64 %2244, %2251
  %2253 = add i64 %2229, %2252
  %2254 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %2255 = load i64, ptr %2254, align 16, !tbaa !11
  %2256 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %2257 = load i64, ptr %2256, align 8, !tbaa !11
  %2258 = and i64 %2255, %2257
  %2259 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %2260 = load i64, ptr %2259, align 16, !tbaa !11
  %2261 = xor i64 %2260, -1
  %2262 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %2263 = load i64, ptr %2262, align 16, !tbaa !11
  %2264 = and i64 %2261, %2263
  %2265 = xor i64 %2258, %2264
  %2266 = add i64 %2253, %2265
  %2267 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %2268 = load i64, ptr %2267, align 8, !tbaa !11
  %2269 = add i64 %2268, %2266
  store i64 %2269, ptr %2267, align 8, !tbaa !11
  %2270 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %2271 = load i64, ptr %2270, align 8, !tbaa !11
  %2272 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %2273 = load i64, ptr %2272, align 8, !tbaa !11
  %2274 = add i64 %2273, %2271
  store i64 %2274, ptr %2272, align 8, !tbaa !11
  %2275 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %2276 = load i64, ptr %2275, align 16, !tbaa !11
  %2277 = lshr i64 %2276, 28
  %2278 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %2279 = load i64, ptr %2278, align 16, !tbaa !11
  %2280 = shl i64 %2279, 36
  %2281 = or i64 %2277, %2280
  %2282 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %2283 = load i64, ptr %2282, align 16, !tbaa !11
  %2284 = lshr i64 %2283, 34
  %2285 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %2286 = load i64, ptr %2285, align 16, !tbaa !11
  %2287 = shl i64 %2286, 30
  %2288 = or i64 %2284, %2287
  %2289 = xor i64 %2281, %2288
  %2290 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %2291 = load i64, ptr %2290, align 16, !tbaa !11
  %2292 = lshr i64 %2291, 39
  %2293 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %2294 = load i64, ptr %2293, align 16, !tbaa !11
  %2295 = shl i64 %2294, 25
  %2296 = or i64 %2292, %2295
  %2297 = xor i64 %2289, %2296
  %2298 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %2299 = load i64, ptr %2298, align 16, !tbaa !11
  %2300 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %2301 = load i64, ptr %2300, align 8, !tbaa !11
  %2302 = and i64 %2299, %2301
  %2303 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %2304 = load i64, ptr %2303, align 16, !tbaa !11
  %2305 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %2306 = load i64, ptr %2305, align 16, !tbaa !11
  %2307 = and i64 %2304, %2306
  %2308 = xor i64 %2302, %2307
  %2309 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %2310 = load i64, ptr %2309, align 8, !tbaa !11
  %2311 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %2312 = load i64, ptr %2311, align 16, !tbaa !11
  %2313 = and i64 %2310, %2312
  %2314 = xor i64 %2308, %2313
  %2315 = add i64 %2297, %2314
  %2316 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %2317 = load i64, ptr %2316, align 8, !tbaa !11
  %2318 = add i64 %2317, %2315
  store i64 %2318, ptr %2316, align 8, !tbaa !11
  %2319 = load i32, ptr %13, align 4, !tbaa !9
  %2320 = icmp ne i32 %2319, 0
  br i1 %2320, label %2321, label %2367

2321:                                             ; preds = %2221
  %2322 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 13
  %2323 = load i64, ptr %2322, align 8, !tbaa !11
  %2324 = lshr i64 %2323, 19
  %2325 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 13
  %2326 = load i64, ptr %2325, align 8, !tbaa !11
  %2327 = shl i64 %2326, 45
  %2328 = or i64 %2324, %2327
  %2329 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 13
  %2330 = load i64, ptr %2329, align 8, !tbaa !11
  %2331 = lshr i64 %2330, 61
  %2332 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 13
  %2333 = load i64, ptr %2332, align 8, !tbaa !11
  %2334 = shl i64 %2333, 3
  %2335 = or i64 %2331, %2334
  %2336 = xor i64 %2328, %2335
  %2337 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 13
  %2338 = load i64, ptr %2337, align 8, !tbaa !11
  %2339 = lshr i64 %2338, 6
  %2340 = xor i64 %2336, %2339
  %2341 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 8
  %2342 = load i64, ptr %2341, align 16, !tbaa !11
  %2343 = add i64 %2340, %2342
  %2344 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 0
  %2345 = load i64, ptr %2344, align 16, !tbaa !11
  %2346 = lshr i64 %2345, 1
  %2347 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 0
  %2348 = load i64, ptr %2347, align 16, !tbaa !11
  %2349 = shl i64 %2348, 63
  %2350 = or i64 %2346, %2349
  %2351 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 0
  %2352 = load i64, ptr %2351, align 16, !tbaa !11
  %2353 = lshr i64 %2352, 8
  %2354 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 0
  %2355 = load i64, ptr %2354, align 16, !tbaa !11
  %2356 = shl i64 %2355, 56
  %2357 = or i64 %2353, %2356
  %2358 = xor i64 %2350, %2357
  %2359 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 0
  %2360 = load i64, ptr %2359, align 16, !tbaa !11
  %2361 = lshr i64 %2360, 7
  %2362 = xor i64 %2358, %2361
  %2363 = add i64 %2343, %2362
  %2364 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 15
  %2365 = load i64, ptr %2364, align 8, !tbaa !11
  %2366 = add i64 %2365, %2363
  store i64 %2366, ptr %2364, align 8, !tbaa !11
  br label %2370

2367:                                             ; preds = %2221
  %2368 = getelementptr inbounds [16 x i64], ptr %12, i64 0, i64 15
  %2369 = load i64, ptr %2368, align 8, !tbaa !11
  br label %2370

2370:                                             ; preds = %2367, %2321
  %2371 = phi i64 [ %2366, %2321 ], [ %2369, %2367 ]
  %2372 = load ptr, ptr %11, align 8, !tbaa !5
  %2373 = load i32, ptr %13, align 4, !tbaa !9
  %2374 = add nsw i32 15, %2373
  %2375 = sext i32 %2374 to i64
  %2376 = getelementptr inbounds i64, ptr %2372, i64 %2375
  %2377 = load i64, ptr %2376, align 8, !tbaa !11
  %2378 = add i64 %2371, %2377
  %2379 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %2380 = load i64, ptr %2379, align 8, !tbaa !11
  %2381 = lshr i64 %2380, 14
  %2382 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %2383 = load i64, ptr %2382, align 8, !tbaa !11
  %2384 = shl i64 %2383, 50
  %2385 = or i64 %2381, %2384
  %2386 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %2387 = load i64, ptr %2386, align 8, !tbaa !11
  %2388 = lshr i64 %2387, 18
  %2389 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %2390 = load i64, ptr %2389, align 8, !tbaa !11
  %2391 = shl i64 %2390, 46
  %2392 = or i64 %2388, %2391
  %2393 = xor i64 %2385, %2392
  %2394 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %2395 = load i64, ptr %2394, align 8, !tbaa !11
  %2396 = lshr i64 %2395, 41
  %2397 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %2398 = load i64, ptr %2397, align 8, !tbaa !11
  %2399 = shl i64 %2398, 23
  %2400 = or i64 %2396, %2399
  %2401 = xor i64 %2393, %2400
  %2402 = add i64 %2378, %2401
  %2403 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %2404 = load i64, ptr %2403, align 8, !tbaa !11
  %2405 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %2406 = load i64, ptr %2405, align 16, !tbaa !11
  %2407 = and i64 %2404, %2406
  %2408 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %2409 = load i64, ptr %2408, align 8, !tbaa !11
  %2410 = xor i64 %2409, -1
  %2411 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %2412 = load i64, ptr %2411, align 8, !tbaa !11
  %2413 = and i64 %2410, %2412
  %2414 = xor i64 %2407, %2413
  %2415 = add i64 %2402, %2414
  %2416 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %2417 = load i64, ptr %2416, align 16, !tbaa !11
  %2418 = add i64 %2417, %2415
  store i64 %2418, ptr %2416, align 16, !tbaa !11
  %2419 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %2420 = load i64, ptr %2419, align 16, !tbaa !11
  %2421 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %2422 = load i64, ptr %2421, align 16, !tbaa !11
  %2423 = add i64 %2422, %2420
  store i64 %2423, ptr %2421, align 16, !tbaa !11
  %2424 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %2425 = load i64, ptr %2424, align 8, !tbaa !11
  %2426 = lshr i64 %2425, 28
  %2427 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %2428 = load i64, ptr %2427, align 8, !tbaa !11
  %2429 = shl i64 %2428, 36
  %2430 = or i64 %2426, %2429
  %2431 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %2432 = load i64, ptr %2431, align 8, !tbaa !11
  %2433 = lshr i64 %2432, 34
  %2434 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %2435 = load i64, ptr %2434, align 8, !tbaa !11
  %2436 = shl i64 %2435, 30
  %2437 = or i64 %2433, %2436
  %2438 = xor i64 %2430, %2437
  %2439 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %2440 = load i64, ptr %2439, align 8, !tbaa !11
  %2441 = lshr i64 %2440, 39
  %2442 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %2443 = load i64, ptr %2442, align 8, !tbaa !11
  %2444 = shl i64 %2443, 25
  %2445 = or i64 %2441, %2444
  %2446 = xor i64 %2438, %2445
  %2447 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %2448 = load i64, ptr %2447, align 8, !tbaa !11
  %2449 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %2450 = load i64, ptr %2449, align 16, !tbaa !11
  %2451 = and i64 %2448, %2450
  %2452 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %2453 = load i64, ptr %2452, align 8, !tbaa !11
  %2454 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %2455 = load i64, ptr %2454, align 8, !tbaa !11
  %2456 = and i64 %2453, %2455
  %2457 = xor i64 %2451, %2456
  %2458 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %2459 = load i64, ptr %2458, align 16, !tbaa !11
  %2460 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %2461 = load i64, ptr %2460, align 8, !tbaa !11
  %2462 = and i64 %2459, %2461
  %2463 = xor i64 %2457, %2462
  %2464 = add i64 %2446, %2463
  %2465 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %2466 = load i64, ptr %2465, align 16, !tbaa !11
  %2467 = add i64 %2466, %2464
  store i64 %2467, ptr %2465, align 16, !tbaa !11
  br label %2468

2468:                                             ; preds = %2370
  %2469 = load i32, ptr %13, align 4, !tbaa !9
  %2470 = add nsw i32 %2469, 16
  store i32 %2470, ptr %13, align 4, !tbaa !9
  br label %80, !llvm.loop !15

2471:                                             ; preds = %80
  %2472 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 0
  %2473 = load i64, ptr %2472, align 16, !tbaa !11
  %2474 = load ptr, ptr %10, align 8, !tbaa !5
  %2475 = getelementptr inbounds i64, ptr %2474, i64 0
  %2476 = load i64, ptr %2475, align 8, !tbaa !11
  %2477 = add i64 %2476, %2473
  store i64 %2477, ptr %2475, align 8, !tbaa !11
  %2478 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 1
  %2479 = load i64, ptr %2478, align 8, !tbaa !11
  %2480 = load ptr, ptr %10, align 8, !tbaa !5
  %2481 = getelementptr inbounds i64, ptr %2480, i64 1
  %2482 = load i64, ptr %2481, align 8, !tbaa !11
  %2483 = add i64 %2482, %2479
  store i64 %2483, ptr %2481, align 8, !tbaa !11
  %2484 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 2
  %2485 = load i64, ptr %2484, align 16, !tbaa !11
  %2486 = load ptr, ptr %10, align 8, !tbaa !5
  %2487 = getelementptr inbounds i64, ptr %2486, i64 2
  %2488 = load i64, ptr %2487, align 8, !tbaa !11
  %2489 = add i64 %2488, %2485
  store i64 %2489, ptr %2487, align 8, !tbaa !11
  %2490 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 3
  %2491 = load i64, ptr %2490, align 8, !tbaa !11
  %2492 = load ptr, ptr %10, align 8, !tbaa !5
  %2493 = getelementptr inbounds i64, ptr %2492, i64 3
  %2494 = load i64, ptr %2493, align 8, !tbaa !11
  %2495 = add i64 %2494, %2491
  store i64 %2495, ptr %2493, align 8, !tbaa !11
  %2496 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 4
  %2497 = load i64, ptr %2496, align 16, !tbaa !11
  %2498 = load ptr, ptr %10, align 8, !tbaa !5
  %2499 = getelementptr inbounds i64, ptr %2498, i64 4
  %2500 = load i64, ptr %2499, align 8, !tbaa !11
  %2501 = add i64 %2500, %2497
  store i64 %2501, ptr %2499, align 8, !tbaa !11
  %2502 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 5
  %2503 = load i64, ptr %2502, align 8, !tbaa !11
  %2504 = load ptr, ptr %10, align 8, !tbaa !5
  %2505 = getelementptr inbounds i64, ptr %2504, i64 5
  %2506 = load i64, ptr %2505, align 8, !tbaa !11
  %2507 = add i64 %2506, %2503
  store i64 %2507, ptr %2505, align 8, !tbaa !11
  %2508 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 6
  %2509 = load i64, ptr %2508, align 16, !tbaa !11
  %2510 = load ptr, ptr %10, align 8, !tbaa !5
  %2511 = getelementptr inbounds i64, ptr %2510, i64 6
  %2512 = load i64, ptr %2511, align 8, !tbaa !11
  %2513 = add i64 %2512, %2509
  store i64 %2513, ptr %2511, align 8, !tbaa !11
  %2514 = getelementptr inbounds [8 x i64], ptr %14, i64 0, i64 7
  %2515 = load i64, ptr %2514, align 8, !tbaa !11
  %2516 = load ptr, ptr %10, align 8, !tbaa !5
  %2517 = getelementptr inbounds i64, ptr %2516, i64 7
  %2518 = load i64, ptr %2517, align 8, !tbaa !11
  %2519 = add i64 %2518, %2515
  store i64 %2519, ptr %2517, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 64, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 128, ptr %12) #3
  br label %2520

2520:                                             ; preds = %2471
  %2521 = load ptr, ptr %9, align 8, !tbaa !5
  %2522 = getelementptr inbounds i32, ptr %2521, i64 32
  store ptr %2522, ptr %9, align 8, !tbaa !5
  %2523 = load i32, ptr %7, align 4, !tbaa !9
  %2524 = sub nsw i32 %2523, 128
  store i32 %2524, ptr %7, align 4, !tbaa !9
  br label %20, !llvm.loop !16

2525:                                             ; preds = %20
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #3
  ret void
}

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @CopyBlock(ptr noundef, ptr noundef, i32 noundef) #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long long", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}


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

; Function Attrs: nounwind uwtable
define dso_local void @UpdateSHA512(ptr noundef %0, ptr nocapture noundef readonly %1, i32 noundef %2, ptr nocapture noundef readonly %3) local_unnamed_addr #0 {
  %5 = alloca [8 x i64], align 16
  %6 = icmp sgt i32 %2, 127
  br i1 %6, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %4
  %7 = getelementptr inbounds i8, ptr %5, i64 32
  %8 = getelementptr inbounds i8, ptr %5, i64 40
  %9 = getelementptr inbounds i8, ptr %5, i64 48
  %10 = getelementptr inbounds i8, ptr %5, i64 56
  %11 = getelementptr inbounds i8, ptr %5, i64 24
  %12 = getelementptr inbounds i8, ptr %5, i64 8
  %13 = getelementptr inbounds i8, ptr %5, i64 16
  %14 = getelementptr inbounds i8, ptr %0, i64 8
  %15 = getelementptr inbounds i8, ptr %0, i64 16
  %16 = getelementptr inbounds i8, ptr %0, i64 24
  %17 = getelementptr inbounds i8, ptr %0, i64 32
  %18 = getelementptr inbounds i8, ptr %0, i64 40
  %19 = getelementptr inbounds i8, ptr %0, i64 48
  %20 = getelementptr inbounds i8, ptr %0, i64 56
  br label %21

21:                                               ; preds = %.lr.ph, %894
  %.0114 = phi i32 [ %2, %.lr.ph ], [ %912, %894 ]
  %.079113 = phi ptr [ %1, %.lr.ph ], [ %911, %894 ]
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %5) #4
  %22 = load i32, ptr %.079113, align 4, !tbaa !5
  %23 = getelementptr inbounds i8, ptr %.079113, i64 4
  %24 = load i32, ptr %23, align 4, !tbaa !5
  %25 = zext i32 %22 to i64
  %26 = zext i32 %24 to i64
  %27 = shl nuw i64 %26, 32
  %28 = or disjoint i64 %27, %25
  %29 = call i64 @llvm.bswap.i64(i64 %28)
  %30 = getelementptr inbounds i8, ptr %.079113, i64 8
  %31 = load i32, ptr %30, align 4, !tbaa !5
  %32 = getelementptr inbounds i8, ptr %.079113, i64 12
  %33 = load i32, ptr %32, align 4, !tbaa !5
  %34 = zext i32 %31 to i64
  %35 = zext i32 %33 to i64
  %36 = shl nuw i64 %35, 32
  %37 = or disjoint i64 %36, %34
  %38 = call i64 @llvm.bswap.i64(i64 %37)
  %39 = getelementptr inbounds i8, ptr %.079113, i64 16
  %40 = load i32, ptr %39, align 4, !tbaa !5
  %41 = getelementptr inbounds i8, ptr %.079113, i64 20
  %42 = load i32, ptr %41, align 4, !tbaa !5
  %43 = zext i32 %40 to i64
  %44 = zext i32 %42 to i64
  %45 = shl nuw i64 %44, 32
  %46 = or disjoint i64 %45, %43
  %47 = call i64 @llvm.bswap.i64(i64 %46)
  %48 = getelementptr inbounds i8, ptr %.079113, i64 24
  %49 = load i32, ptr %48, align 4, !tbaa !5
  %50 = getelementptr inbounds i8, ptr %.079113, i64 28
  %51 = load i32, ptr %50, align 4, !tbaa !5
  %52 = zext i32 %49 to i64
  %53 = zext i32 %51 to i64
  %54 = shl nuw i64 %53, 32
  %55 = or disjoint i64 %54, %52
  %56 = call i64 @llvm.bswap.i64(i64 %55)
  %57 = getelementptr inbounds i8, ptr %.079113, i64 32
  %58 = load i32, ptr %57, align 4, !tbaa !5
  %59 = getelementptr inbounds i8, ptr %.079113, i64 36
  %60 = load i32, ptr %59, align 4, !tbaa !5
  %61 = zext i32 %58 to i64
  %62 = zext i32 %60 to i64
  %63 = shl nuw i64 %62, 32
  %64 = or disjoint i64 %63, %61
  %65 = call i64 @llvm.bswap.i64(i64 %64)
  %66 = getelementptr inbounds i8, ptr %.079113, i64 40
  %67 = load i32, ptr %66, align 4, !tbaa !5
  %68 = getelementptr inbounds i8, ptr %.079113, i64 44
  %69 = load i32, ptr %68, align 4, !tbaa !5
  %70 = zext i32 %67 to i64
  %71 = zext i32 %69 to i64
  %72 = shl nuw i64 %71, 32
  %73 = or disjoint i64 %72, %70
  %74 = call i64 @llvm.bswap.i64(i64 %73)
  %75 = getelementptr inbounds i8, ptr %.079113, i64 48
  %76 = load i32, ptr %75, align 4, !tbaa !5
  %77 = getelementptr inbounds i8, ptr %.079113, i64 52
  %78 = load i32, ptr %77, align 4, !tbaa !5
  %79 = zext i32 %76 to i64
  %80 = zext i32 %78 to i64
  %81 = shl nuw i64 %80, 32
  %82 = or disjoint i64 %81, %79
  %83 = call i64 @llvm.bswap.i64(i64 %82)
  %84 = getelementptr inbounds i8, ptr %.079113, i64 56
  %85 = load i32, ptr %84, align 4, !tbaa !5
  %86 = getelementptr inbounds i8, ptr %.079113, i64 60
  %87 = load i32, ptr %86, align 4, !tbaa !5
  %88 = zext i32 %85 to i64
  %89 = zext i32 %87 to i64
  %90 = shl nuw i64 %89, 32
  %91 = or disjoint i64 %90, %88
  %92 = call i64 @llvm.bswap.i64(i64 %91)
  %93 = getelementptr inbounds i8, ptr %.079113, i64 64
  %94 = load i32, ptr %93, align 4, !tbaa !5
  %95 = getelementptr inbounds i8, ptr %.079113, i64 68
  %96 = load i32, ptr %95, align 4, !tbaa !5
  %97 = zext i32 %94 to i64
  %98 = zext i32 %96 to i64
  %99 = shl nuw i64 %98, 32
  %100 = or disjoint i64 %99, %97
  %101 = call i64 @llvm.bswap.i64(i64 %100)
  %102 = getelementptr inbounds i8, ptr %.079113, i64 72
  %103 = load i32, ptr %102, align 4, !tbaa !5
  %104 = getelementptr inbounds i8, ptr %.079113, i64 76
  %105 = load i32, ptr %104, align 4, !tbaa !5
  %106 = zext i32 %103 to i64
  %107 = zext i32 %105 to i64
  %108 = shl nuw i64 %107, 32
  %109 = or disjoint i64 %108, %106
  %110 = call i64 @llvm.bswap.i64(i64 %109)
  %111 = getelementptr inbounds i8, ptr %.079113, i64 80
  %112 = load i32, ptr %111, align 4, !tbaa !5
  %113 = getelementptr inbounds i8, ptr %.079113, i64 84
  %114 = load i32, ptr %113, align 4, !tbaa !5
  %115 = zext i32 %112 to i64
  %116 = zext i32 %114 to i64
  %117 = shl nuw i64 %116, 32
  %118 = or disjoint i64 %117, %115
  %119 = call i64 @llvm.bswap.i64(i64 %118)
  %120 = getelementptr inbounds i8, ptr %.079113, i64 88
  %121 = load i32, ptr %120, align 4, !tbaa !5
  %122 = getelementptr inbounds i8, ptr %.079113, i64 92
  %123 = load i32, ptr %122, align 4, !tbaa !5
  %124 = zext i32 %121 to i64
  %125 = zext i32 %123 to i64
  %126 = shl nuw i64 %125, 32
  %127 = or disjoint i64 %126, %124
  %128 = call i64 @llvm.bswap.i64(i64 %127)
  %129 = getelementptr inbounds i8, ptr %.079113, i64 96
  %130 = load i32, ptr %129, align 4, !tbaa !5
  %131 = getelementptr inbounds i8, ptr %.079113, i64 100
  %132 = load i32, ptr %131, align 4, !tbaa !5
  %133 = zext i32 %130 to i64
  %134 = zext i32 %132 to i64
  %135 = shl nuw i64 %134, 32
  %136 = or disjoint i64 %135, %133
  %137 = call i64 @llvm.bswap.i64(i64 %136)
  %138 = getelementptr inbounds i8, ptr %.079113, i64 104
  %139 = load i32, ptr %138, align 4, !tbaa !5
  %140 = getelementptr inbounds i8, ptr %.079113, i64 108
  %141 = load i32, ptr %140, align 4, !tbaa !5
  %142 = zext i32 %139 to i64
  %143 = zext i32 %141 to i64
  %144 = shl nuw i64 %143, 32
  %145 = or disjoint i64 %144, %142
  %146 = call i64 @llvm.bswap.i64(i64 %145)
  %147 = getelementptr inbounds i8, ptr %.079113, i64 112
  %148 = load i32, ptr %147, align 4, !tbaa !5
  %149 = getelementptr inbounds i8, ptr %.079113, i64 116
  %150 = load i32, ptr %149, align 4, !tbaa !5
  %151 = zext i32 %148 to i64
  %152 = zext i32 %150 to i64
  %153 = shl nuw i64 %152, 32
  %154 = or disjoint i64 %153, %151
  %155 = call i64 @llvm.bswap.i64(i64 %154)
  %156 = getelementptr inbounds i8, ptr %.079113, i64 120
  %157 = load i32, ptr %156, align 4, !tbaa !5
  %158 = getelementptr inbounds i8, ptr %.079113, i64 124
  %159 = load i32, ptr %158, align 4, !tbaa !5
  %160 = zext i32 %157 to i64
  %161 = zext i32 %159 to i64
  %162 = shl nuw i64 %161, 32
  %163 = or disjoint i64 %162, %160
  %164 = call i64 @llvm.bswap.i64(i64 %163)
  call void @CopyBlock(ptr noundef %0, ptr noundef nonnull %5, i32 noundef 64)
  %.promoted82 = load i64, ptr %7, align 16, !tbaa !9
  %.promoted83 = load i64, ptr %8, align 8, !tbaa !9
  %.promoted85 = load i64, ptr %9, align 16, !tbaa !9
  %.promoted87 = load i64, ptr %10, align 8, !tbaa !9
  %.promoted89 = load i64, ptr %11, align 8, !tbaa !9
  %.promoted91 = load i64, ptr %5, align 16, !tbaa !9
  %.promoted93 = load i64, ptr %12, align 8, !tbaa !9
  %.promoted95 = load i64, ptr %13, align 16, !tbaa !9
  br label %165

165:                                              ; preds = %21, %863
  %indvars.iv = phi i64 [ 0, %21 ], [ %indvars.iv.next, %863 ]
  %166 = phi i64 [ %101, %21 ], [ %556, %863 ]
  %167 = phi i64 [ %92, %21 ], [ %512, %863 ]
  %168 = phi i64 [ %83, %21 ], [ %468, %863 ]
  %169 = phi i64 [ %74, %21 ], [ %424, %863 ]
  %170 = phi i64 [ %146, %21 ], [ %776, %863 ]
  %171 = phi i64 [ %65, %21 ], [ %380, %863 ]
  %172 = phi i64 [ %137, %21 ], [ %732, %863 ]
  %173 = phi i64 [ %56, %21 ], [ %336, %863 ]
  %174 = phi i64 [ %128, %21 ], [ %688, %863 ]
  %175 = phi i64 [ %47, %21 ], [ %292, %863 ]
  %176 = phi i64 [ %119, %21 ], [ %644, %863 ]
  %177 = phi i64 [ %164, %21 ], [ %864, %863 ]
  %178 = phi i64 [ %38, %21 ], [ %248, %863 ]
  %179 = phi i64 [ %110, %21 ], [ %600, %863 ]
  %180 = phi i64 [ %155, %21 ], [ %820, %863 ]
  %181 = phi i64 [ %29, %21 ], [ %205, %863 ]
  %182 = phi i64 [ %.promoted82, %21 ], [ %881, %863 ]
  %183 = phi i64 [ %.promoted83, %21 ], [ %837, %863 ]
  %184 = phi i64 [ %.promoted85, %21 ], [ %793, %863 ]
  %185 = phi i64 [ %.promoted87, %21 ], [ %749, %863 ]
  %186 = phi i64 [ %.promoted89, %21 ], [ %760, %863 ]
  %187 = phi i64 [ %.promoted91, %21 ], [ %892, %863 ]
  %188 = phi i64 [ %.promoted93, %21 ], [ %848, %863 ]
  %189 = phi i64 [ %.promoted95, %21 ], [ %804, %863 ]
  %.not = icmp eq i64 %indvars.iv, 0
  br i1 %.not, label %204, label %190

190:                                              ; preds = %165
  %191 = call i64 @llvm.fshl.i64(i64 %180, i64 %180, i64 45)
  %192 = call i64 @llvm.fshl.i64(i64 %180, i64 %180, i64 3)
  %193 = xor i64 %191, %192
  %194 = lshr i64 %180, 6
  %195 = xor i64 %193, %194
  %196 = add i64 %195, %179
  %197 = call i64 @llvm.fshl.i64(i64 %178, i64 %178, i64 63)
  %198 = call i64 @llvm.fshl.i64(i64 %178, i64 %178, i64 56)
  %199 = xor i64 %197, %198
  %200 = lshr i64 %178, 7
  %201 = xor i64 %199, %200
  %202 = add i64 %196, %181
  %203 = add i64 %202, %201
  br label %204

204:                                              ; preds = %165, %190
  %205 = phi i64 [ %203, %190 ], [ %181, %165 ]
  %206 = getelementptr inbounds i64, ptr %3, i64 %indvars.iv
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = add i64 %207, %205
  %209 = call i64 @llvm.fshl.i64(i64 %182, i64 %182, i64 50)
  %210 = call i64 @llvm.fshl.i64(i64 %182, i64 %182, i64 46)
  %211 = xor i64 %209, %210
  %212 = call i64 @llvm.fshl.i64(i64 %182, i64 %182, i64 23)
  %213 = xor i64 %211, %212
  %214 = add i64 %208, %213
  %215 = and i64 %183, %182
  %216 = xor i64 %182, -1
  %217 = and i64 %184, %216
  %218 = or i64 %217, %215
  %219 = add i64 %214, %185
  %220 = add i64 %219, %218
  %221 = add i64 %220, %186
  %222 = call i64 @llvm.fshl.i64(i64 %187, i64 %187, i64 36)
  %223 = call i64 @llvm.fshl.i64(i64 %187, i64 %187, i64 30)
  %224 = xor i64 %222, %223
  %225 = call i64 @llvm.fshl.i64(i64 %187, i64 %187, i64 25)
  %226 = xor i64 %224, %225
  %227 = xor i64 %189, %188
  %228 = and i64 %227, %187
  %229 = and i64 %189, %188
  %230 = xor i64 %228, %229
  %231 = add i64 %226, %220
  %232 = add i64 %231, %230
  br i1 %.not, label %247, label %233

233:                                              ; preds = %204
  %234 = call i64 @llvm.fshl.i64(i64 %177, i64 %177, i64 45)
  %235 = call i64 @llvm.fshl.i64(i64 %177, i64 %177, i64 3)
  %236 = xor i64 %234, %235
  %237 = lshr i64 %177, 6
  %238 = xor i64 %236, %237
  %239 = add i64 %238, %176
  %240 = call i64 @llvm.fshl.i64(i64 %175, i64 %175, i64 63)
  %241 = call i64 @llvm.fshl.i64(i64 %175, i64 %175, i64 56)
  %242 = xor i64 %240, %241
  %243 = lshr i64 %175, 7
  %244 = xor i64 %242, %243
  %245 = add i64 %239, %178
  %246 = add i64 %245, %244
  br label %247

247:                                              ; preds = %204, %233
  %248 = phi i64 [ %246, %233 ], [ %178, %204 ]
  %249 = or disjoint i64 %indvars.iv, 1
  %250 = getelementptr inbounds i64, ptr %3, i64 %249
  %251 = load i64, ptr %250, align 8, !tbaa !9
  %252 = call i64 @llvm.fshl.i64(i64 %221, i64 %221, i64 50)
  %253 = call i64 @llvm.fshl.i64(i64 %221, i64 %221, i64 46)
  %254 = xor i64 %252, %253
  %255 = call i64 @llvm.fshl.i64(i64 %221, i64 %221, i64 23)
  %256 = xor i64 %254, %255
  %257 = and i64 %221, %182
  %258 = xor i64 %221, -1
  %259 = and i64 %183, %258
  %260 = or i64 %257, %259
  %261 = add i64 %260, %184
  %262 = add i64 %261, %256
  %263 = add i64 %262, %248
  %264 = add i64 %263, %251
  %265 = add i64 %264, %189
  %266 = call i64 @llvm.fshl.i64(i64 %232, i64 %232, i64 36)
  %267 = call i64 @llvm.fshl.i64(i64 %232, i64 %232, i64 30)
  %268 = xor i64 %266, %267
  %269 = call i64 @llvm.fshl.i64(i64 %232, i64 %232, i64 25)
  %270 = xor i64 %268, %269
  %271 = xor i64 %188, %187
  %272 = and i64 %232, %271
  %273 = and i64 %188, %187
  %274 = xor i64 %272, %273
  %275 = add i64 %270, %274
  %276 = add i64 %275, %264
  br i1 %.not, label %291, label %277

277:                                              ; preds = %247
  %278 = call i64 @llvm.fshl.i64(i64 %205, i64 %205, i64 45)
  %279 = call i64 @llvm.fshl.i64(i64 %205, i64 %205, i64 3)
  %280 = xor i64 %278, %279
  %281 = lshr i64 %205, 6
  %282 = xor i64 %280, %281
  %283 = add i64 %282, %174
  %284 = call i64 @llvm.fshl.i64(i64 %173, i64 %173, i64 63)
  %285 = call i64 @llvm.fshl.i64(i64 %173, i64 %173, i64 56)
  %286 = xor i64 %284, %285
  %287 = lshr i64 %173, 7
  %288 = xor i64 %286, %287
  %289 = add i64 %283, %175
  %290 = add i64 %289, %288
  br label %291

291:                                              ; preds = %247, %277
  %292 = phi i64 [ %290, %277 ], [ %175, %247 ]
  %293 = or disjoint i64 %indvars.iv, 2
  %294 = getelementptr inbounds i64, ptr %3, i64 %293
  %295 = load i64, ptr %294, align 8, !tbaa !9
  %296 = call i64 @llvm.fshl.i64(i64 %265, i64 %265, i64 50)
  %297 = call i64 @llvm.fshl.i64(i64 %265, i64 %265, i64 46)
  %298 = xor i64 %296, %297
  %299 = call i64 @llvm.fshl.i64(i64 %265, i64 %265, i64 23)
  %300 = xor i64 %298, %299
  %301 = and i64 %265, %221
  %302 = xor i64 %265, -1
  %303 = and i64 %182, %302
  %304 = or i64 %301, %303
  %305 = add i64 %304, %183
  %306 = add i64 %305, %300
  %307 = add i64 %306, %292
  %308 = add i64 %307, %295
  %309 = add i64 %308, %188
  %310 = call i64 @llvm.fshl.i64(i64 %276, i64 %276, i64 36)
  %311 = call i64 @llvm.fshl.i64(i64 %276, i64 %276, i64 30)
  %312 = xor i64 %310, %311
  %313 = call i64 @llvm.fshl.i64(i64 %276, i64 %276, i64 25)
  %314 = xor i64 %312, %313
  %315 = xor i64 %232, %187
  %316 = and i64 %276, %315
  %317 = and i64 %232, %187
  %318 = xor i64 %316, %317
  %319 = add i64 %314, %318
  %320 = add i64 %319, %308
  br i1 %.not, label %335, label %321

321:                                              ; preds = %291
  %322 = call i64 @llvm.fshl.i64(i64 %248, i64 %248, i64 45)
  %323 = call i64 @llvm.fshl.i64(i64 %248, i64 %248, i64 3)
  %324 = xor i64 %322, %323
  %325 = lshr i64 %248, 6
  %326 = xor i64 %324, %325
  %327 = add i64 %326, %172
  %328 = call i64 @llvm.fshl.i64(i64 %171, i64 %171, i64 63)
  %329 = call i64 @llvm.fshl.i64(i64 %171, i64 %171, i64 56)
  %330 = xor i64 %328, %329
  %331 = lshr i64 %171, 7
  %332 = xor i64 %330, %331
  %333 = add i64 %327, %173
  %334 = add i64 %333, %332
  br label %335

335:                                              ; preds = %291, %321
  %336 = phi i64 [ %334, %321 ], [ %173, %291 ]
  %337 = or disjoint i64 %indvars.iv, 3
  %338 = getelementptr inbounds i64, ptr %3, i64 %337
  %339 = load i64, ptr %338, align 8, !tbaa !9
  %340 = call i64 @llvm.fshl.i64(i64 %309, i64 %309, i64 50)
  %341 = call i64 @llvm.fshl.i64(i64 %309, i64 %309, i64 46)
  %342 = xor i64 %340, %341
  %343 = call i64 @llvm.fshl.i64(i64 %309, i64 %309, i64 23)
  %344 = xor i64 %342, %343
  %345 = and i64 %309, %265
  %346 = xor i64 %309, -1
  %347 = and i64 %221, %346
  %348 = or i64 %345, %347
  %349 = add i64 %348, %182
  %350 = add i64 %349, %344
  %351 = add i64 %350, %336
  %352 = add i64 %351, %339
  %353 = add i64 %352, %187
  %354 = call i64 @llvm.fshl.i64(i64 %320, i64 %320, i64 36)
  %355 = call i64 @llvm.fshl.i64(i64 %320, i64 %320, i64 30)
  %356 = xor i64 %354, %355
  %357 = call i64 @llvm.fshl.i64(i64 %320, i64 %320, i64 25)
  %358 = xor i64 %356, %357
  %359 = xor i64 %276, %232
  %360 = and i64 %320, %359
  %361 = and i64 %276, %232
  %362 = xor i64 %360, %361
  %363 = add i64 %358, %362
  %364 = add i64 %363, %352
  br i1 %.not, label %379, label %365

365:                                              ; preds = %335
  %366 = call i64 @llvm.fshl.i64(i64 %292, i64 %292, i64 45)
  %367 = call i64 @llvm.fshl.i64(i64 %292, i64 %292, i64 3)
  %368 = xor i64 %366, %367
  %369 = lshr i64 %292, 6
  %370 = xor i64 %368, %369
  %371 = add i64 %370, %170
  %372 = call i64 @llvm.fshl.i64(i64 %169, i64 %169, i64 63)
  %373 = call i64 @llvm.fshl.i64(i64 %169, i64 %169, i64 56)
  %374 = xor i64 %372, %373
  %375 = lshr i64 %169, 7
  %376 = xor i64 %374, %375
  %377 = add i64 %371, %171
  %378 = add i64 %377, %376
  br label %379

379:                                              ; preds = %335, %365
  %380 = phi i64 [ %378, %365 ], [ %171, %335 ]
  %381 = or disjoint i64 %indvars.iv, 4
  %382 = getelementptr inbounds i64, ptr %3, i64 %381
  %383 = load i64, ptr %382, align 8, !tbaa !9
  %384 = call i64 @llvm.fshl.i64(i64 %353, i64 %353, i64 50)
  %385 = call i64 @llvm.fshl.i64(i64 %353, i64 %353, i64 46)
  %386 = xor i64 %384, %385
  %387 = call i64 @llvm.fshl.i64(i64 %353, i64 %353, i64 23)
  %388 = xor i64 %386, %387
  %389 = and i64 %353, %309
  %390 = xor i64 %353, -1
  %391 = and i64 %265, %390
  %392 = or i64 %389, %391
  %393 = add i64 %392, %221
  %394 = add i64 %393, %388
  %395 = add i64 %394, %380
  %396 = add i64 %395, %383
  %397 = add i64 %396, %232
  %398 = call i64 @llvm.fshl.i64(i64 %364, i64 %364, i64 36)
  %399 = call i64 @llvm.fshl.i64(i64 %364, i64 %364, i64 30)
  %400 = xor i64 %398, %399
  %401 = call i64 @llvm.fshl.i64(i64 %364, i64 %364, i64 25)
  %402 = xor i64 %400, %401
  %403 = xor i64 %320, %276
  %404 = and i64 %364, %403
  %405 = and i64 %320, %276
  %406 = xor i64 %404, %405
  %407 = add i64 %402, %406
  %408 = add i64 %407, %396
  br i1 %.not, label %423, label %409

409:                                              ; preds = %379
  %410 = call i64 @llvm.fshl.i64(i64 %336, i64 %336, i64 45)
  %411 = call i64 @llvm.fshl.i64(i64 %336, i64 %336, i64 3)
  %412 = xor i64 %410, %411
  %413 = lshr i64 %336, 6
  %414 = xor i64 %412, %413
  %415 = add i64 %414, %180
  %416 = call i64 @llvm.fshl.i64(i64 %168, i64 %168, i64 63)
  %417 = call i64 @llvm.fshl.i64(i64 %168, i64 %168, i64 56)
  %418 = xor i64 %416, %417
  %419 = lshr i64 %168, 7
  %420 = xor i64 %418, %419
  %421 = add i64 %415, %169
  %422 = add i64 %421, %420
  br label %423

423:                                              ; preds = %379, %409
  %424 = phi i64 [ %422, %409 ], [ %169, %379 ]
  %425 = or disjoint i64 %indvars.iv, 5
  %426 = getelementptr inbounds i64, ptr %3, i64 %425
  %427 = load i64, ptr %426, align 8, !tbaa !9
  %428 = call i64 @llvm.fshl.i64(i64 %397, i64 %397, i64 50)
  %429 = call i64 @llvm.fshl.i64(i64 %397, i64 %397, i64 46)
  %430 = xor i64 %428, %429
  %431 = call i64 @llvm.fshl.i64(i64 %397, i64 %397, i64 23)
  %432 = xor i64 %430, %431
  %433 = and i64 %397, %353
  %434 = xor i64 %397, -1
  %435 = and i64 %309, %434
  %436 = or i64 %433, %435
  %437 = add i64 %436, %265
  %438 = add i64 %437, %432
  %439 = add i64 %438, %424
  %440 = add i64 %439, %427
  %441 = add i64 %440, %276
  %442 = call i64 @llvm.fshl.i64(i64 %408, i64 %408, i64 36)
  %443 = call i64 @llvm.fshl.i64(i64 %408, i64 %408, i64 30)
  %444 = xor i64 %442, %443
  %445 = call i64 @llvm.fshl.i64(i64 %408, i64 %408, i64 25)
  %446 = xor i64 %444, %445
  %447 = xor i64 %364, %320
  %448 = and i64 %408, %447
  %449 = and i64 %364, %320
  %450 = xor i64 %448, %449
  %451 = add i64 %446, %450
  %452 = add i64 %451, %440
  br i1 %.not, label %467, label %453

453:                                              ; preds = %423
  %454 = call i64 @llvm.fshl.i64(i64 %380, i64 %380, i64 45)
  %455 = call i64 @llvm.fshl.i64(i64 %380, i64 %380, i64 3)
  %456 = xor i64 %454, %455
  %457 = lshr i64 %380, 6
  %458 = xor i64 %456, %457
  %459 = add i64 %458, %177
  %460 = call i64 @llvm.fshl.i64(i64 %167, i64 %167, i64 63)
  %461 = call i64 @llvm.fshl.i64(i64 %167, i64 %167, i64 56)
  %462 = xor i64 %460, %461
  %463 = lshr i64 %167, 7
  %464 = xor i64 %462, %463
  %465 = add i64 %459, %168
  %466 = add i64 %465, %464
  br label %467

467:                                              ; preds = %423, %453
  %468 = phi i64 [ %466, %453 ], [ %168, %423 ]
  %469 = or disjoint i64 %indvars.iv, 6
  %470 = getelementptr inbounds i64, ptr %3, i64 %469
  %471 = load i64, ptr %470, align 8, !tbaa !9
  %472 = call i64 @llvm.fshl.i64(i64 %441, i64 %441, i64 50)
  %473 = call i64 @llvm.fshl.i64(i64 %441, i64 %441, i64 46)
  %474 = xor i64 %472, %473
  %475 = call i64 @llvm.fshl.i64(i64 %441, i64 %441, i64 23)
  %476 = xor i64 %474, %475
  %477 = and i64 %441, %397
  %478 = xor i64 %441, -1
  %479 = and i64 %353, %478
  %480 = or i64 %477, %479
  %481 = add i64 %480, %309
  %482 = add i64 %481, %476
  %483 = add i64 %482, %468
  %484 = add i64 %483, %471
  %485 = add i64 %484, %320
  %486 = call i64 @llvm.fshl.i64(i64 %452, i64 %452, i64 36)
  %487 = call i64 @llvm.fshl.i64(i64 %452, i64 %452, i64 30)
  %488 = xor i64 %486, %487
  %489 = call i64 @llvm.fshl.i64(i64 %452, i64 %452, i64 25)
  %490 = xor i64 %488, %489
  %491 = xor i64 %408, %364
  %492 = and i64 %452, %491
  %493 = and i64 %408, %364
  %494 = xor i64 %492, %493
  %495 = add i64 %490, %494
  %496 = add i64 %495, %484
  br i1 %.not, label %511, label %497

497:                                              ; preds = %467
  %498 = call i64 @llvm.fshl.i64(i64 %424, i64 %424, i64 45)
  %499 = call i64 @llvm.fshl.i64(i64 %424, i64 %424, i64 3)
  %500 = xor i64 %498, %499
  %501 = lshr i64 %424, 6
  %502 = xor i64 %500, %501
  %503 = add i64 %502, %205
  %504 = call i64 @llvm.fshl.i64(i64 %166, i64 %166, i64 63)
  %505 = call i64 @llvm.fshl.i64(i64 %166, i64 %166, i64 56)
  %506 = xor i64 %504, %505
  %507 = lshr i64 %166, 7
  %508 = xor i64 %506, %507
  %509 = add i64 %503, %167
  %510 = add i64 %509, %508
  br label %511

511:                                              ; preds = %467, %497
  %512 = phi i64 [ %510, %497 ], [ %167, %467 ]
  %513 = or disjoint i64 %indvars.iv, 7
  %514 = getelementptr inbounds i64, ptr %3, i64 %513
  %515 = load i64, ptr %514, align 8, !tbaa !9
  %516 = call i64 @llvm.fshl.i64(i64 %485, i64 %485, i64 50)
  %517 = call i64 @llvm.fshl.i64(i64 %485, i64 %485, i64 46)
  %518 = xor i64 %516, %517
  %519 = call i64 @llvm.fshl.i64(i64 %485, i64 %485, i64 23)
  %520 = xor i64 %518, %519
  %521 = and i64 %485, %441
  %522 = xor i64 %485, -1
  %523 = and i64 %397, %522
  %524 = or i64 %521, %523
  %525 = add i64 %524, %353
  %526 = add i64 %525, %520
  %527 = add i64 %526, %512
  %528 = add i64 %527, %515
  %529 = add i64 %528, %364
  %530 = call i64 @llvm.fshl.i64(i64 %496, i64 %496, i64 36)
  %531 = call i64 @llvm.fshl.i64(i64 %496, i64 %496, i64 30)
  %532 = xor i64 %530, %531
  %533 = call i64 @llvm.fshl.i64(i64 %496, i64 %496, i64 25)
  %534 = xor i64 %532, %533
  %535 = xor i64 %452, %408
  %536 = and i64 %496, %535
  %537 = and i64 %452, %408
  %538 = xor i64 %536, %537
  %539 = add i64 %534, %538
  %540 = add i64 %539, %528
  br i1 %.not, label %555, label %541

541:                                              ; preds = %511
  %542 = call i64 @llvm.fshl.i64(i64 %468, i64 %468, i64 45)
  %543 = call i64 @llvm.fshl.i64(i64 %468, i64 %468, i64 3)
  %544 = xor i64 %542, %543
  %545 = lshr i64 %468, 6
  %546 = xor i64 %544, %545
  %547 = add i64 %546, %248
  %548 = call i64 @llvm.fshl.i64(i64 %179, i64 %179, i64 63)
  %549 = call i64 @llvm.fshl.i64(i64 %179, i64 %179, i64 56)
  %550 = xor i64 %548, %549
  %551 = lshr i64 %179, 7
  %552 = xor i64 %550, %551
  %553 = add i64 %547, %166
  %554 = add i64 %553, %552
  br label %555

555:                                              ; preds = %511, %541
  %556 = phi i64 [ %554, %541 ], [ %166, %511 ]
  %557 = or disjoint i64 %indvars.iv, 8
  %558 = getelementptr inbounds i64, ptr %3, i64 %557
  %559 = load i64, ptr %558, align 8, !tbaa !9
  %560 = call i64 @llvm.fshl.i64(i64 %529, i64 %529, i64 50)
  %561 = call i64 @llvm.fshl.i64(i64 %529, i64 %529, i64 46)
  %562 = xor i64 %560, %561
  %563 = call i64 @llvm.fshl.i64(i64 %529, i64 %529, i64 23)
  %564 = xor i64 %562, %563
  %565 = and i64 %529, %485
  %566 = xor i64 %529, -1
  %567 = and i64 %441, %566
  %568 = or i64 %565, %567
  %569 = add i64 %568, %397
  %570 = add i64 %569, %564
  %571 = add i64 %570, %556
  %572 = add i64 %571, %559
  %573 = add i64 %572, %408
  %574 = call i64 @llvm.fshl.i64(i64 %540, i64 %540, i64 36)
  %575 = call i64 @llvm.fshl.i64(i64 %540, i64 %540, i64 30)
  %576 = xor i64 %574, %575
  %577 = call i64 @llvm.fshl.i64(i64 %540, i64 %540, i64 25)
  %578 = xor i64 %576, %577
  %579 = xor i64 %496, %452
  %580 = and i64 %540, %579
  %581 = and i64 %496, %452
  %582 = xor i64 %580, %581
  %583 = add i64 %578, %582
  %584 = add i64 %583, %572
  br i1 %.not, label %599, label %585

585:                                              ; preds = %555
  %586 = call i64 @llvm.fshl.i64(i64 %512, i64 %512, i64 45)
  %587 = call i64 @llvm.fshl.i64(i64 %512, i64 %512, i64 3)
  %588 = xor i64 %586, %587
  %589 = lshr i64 %512, 6
  %590 = xor i64 %588, %589
  %591 = add i64 %590, %292
  %592 = call i64 @llvm.fshl.i64(i64 %176, i64 %176, i64 63)
  %593 = call i64 @llvm.fshl.i64(i64 %176, i64 %176, i64 56)
  %594 = xor i64 %592, %593
  %595 = lshr i64 %176, 7
  %596 = xor i64 %594, %595
  %597 = add i64 %591, %179
  %598 = add i64 %597, %596
  br label %599

599:                                              ; preds = %555, %585
  %600 = phi i64 [ %598, %585 ], [ %179, %555 ]
  %601 = or disjoint i64 %indvars.iv, 9
  %602 = getelementptr inbounds i64, ptr %3, i64 %601
  %603 = load i64, ptr %602, align 8, !tbaa !9
  %604 = call i64 @llvm.fshl.i64(i64 %573, i64 %573, i64 50)
  %605 = call i64 @llvm.fshl.i64(i64 %573, i64 %573, i64 46)
  %606 = xor i64 %604, %605
  %607 = call i64 @llvm.fshl.i64(i64 %573, i64 %573, i64 23)
  %608 = xor i64 %606, %607
  %609 = and i64 %573, %529
  %610 = xor i64 %573, -1
  %611 = and i64 %485, %610
  %612 = or i64 %609, %611
  %613 = add i64 %612, %441
  %614 = add i64 %613, %608
  %615 = add i64 %614, %600
  %616 = add i64 %615, %603
  %617 = add i64 %616, %452
  %618 = call i64 @llvm.fshl.i64(i64 %584, i64 %584, i64 36)
  %619 = call i64 @llvm.fshl.i64(i64 %584, i64 %584, i64 30)
  %620 = xor i64 %618, %619
  %621 = call i64 @llvm.fshl.i64(i64 %584, i64 %584, i64 25)
  %622 = xor i64 %620, %621
  %623 = xor i64 %540, %496
  %624 = and i64 %584, %623
  %625 = and i64 %540, %496
  %626 = xor i64 %624, %625
  %627 = add i64 %622, %626
  %628 = add i64 %627, %616
  br i1 %.not, label %643, label %629

629:                                              ; preds = %599
  %630 = call i64 @llvm.fshl.i64(i64 %556, i64 %556, i64 45)
  %631 = call i64 @llvm.fshl.i64(i64 %556, i64 %556, i64 3)
  %632 = xor i64 %630, %631
  %633 = lshr i64 %556, 6
  %634 = xor i64 %632, %633
  %635 = add i64 %634, %336
  %636 = call i64 @llvm.fshl.i64(i64 %174, i64 %174, i64 63)
  %637 = call i64 @llvm.fshl.i64(i64 %174, i64 %174, i64 56)
  %638 = xor i64 %636, %637
  %639 = lshr i64 %174, 7
  %640 = xor i64 %638, %639
  %641 = add i64 %635, %176
  %642 = add i64 %641, %640
  br label %643

643:                                              ; preds = %599, %629
  %644 = phi i64 [ %642, %629 ], [ %176, %599 ]
  %645 = or disjoint i64 %indvars.iv, 10
  %646 = getelementptr inbounds i64, ptr %3, i64 %645
  %647 = load i64, ptr %646, align 8, !tbaa !9
  %648 = call i64 @llvm.fshl.i64(i64 %617, i64 %617, i64 50)
  %649 = call i64 @llvm.fshl.i64(i64 %617, i64 %617, i64 46)
  %650 = xor i64 %648, %649
  %651 = call i64 @llvm.fshl.i64(i64 %617, i64 %617, i64 23)
  %652 = xor i64 %650, %651
  %653 = and i64 %617, %573
  %654 = xor i64 %617, -1
  %655 = and i64 %529, %654
  %656 = or i64 %653, %655
  %657 = add i64 %656, %485
  %658 = add i64 %657, %652
  %659 = add i64 %658, %644
  %660 = add i64 %659, %647
  %661 = add i64 %660, %496
  %662 = call i64 @llvm.fshl.i64(i64 %628, i64 %628, i64 36)
  %663 = call i64 @llvm.fshl.i64(i64 %628, i64 %628, i64 30)
  %664 = xor i64 %662, %663
  %665 = call i64 @llvm.fshl.i64(i64 %628, i64 %628, i64 25)
  %666 = xor i64 %664, %665
  %667 = xor i64 %584, %540
  %668 = and i64 %628, %667
  %669 = and i64 %584, %540
  %670 = xor i64 %668, %669
  %671 = add i64 %666, %670
  %672 = add i64 %671, %660
  br i1 %.not, label %687, label %673

673:                                              ; preds = %643
  %674 = call i64 @llvm.fshl.i64(i64 %600, i64 %600, i64 45)
  %675 = call i64 @llvm.fshl.i64(i64 %600, i64 %600, i64 3)
  %676 = xor i64 %674, %675
  %677 = lshr i64 %600, 6
  %678 = xor i64 %676, %677
  %679 = add i64 %678, %380
  %680 = call i64 @llvm.fshl.i64(i64 %172, i64 %172, i64 63)
  %681 = call i64 @llvm.fshl.i64(i64 %172, i64 %172, i64 56)
  %682 = xor i64 %680, %681
  %683 = lshr i64 %172, 7
  %684 = xor i64 %682, %683
  %685 = add i64 %679, %174
  %686 = add i64 %685, %684
  br label %687

687:                                              ; preds = %643, %673
  %688 = phi i64 [ %686, %673 ], [ %174, %643 ]
  %689 = or disjoint i64 %indvars.iv, 11
  %690 = getelementptr inbounds i64, ptr %3, i64 %689
  %691 = load i64, ptr %690, align 8, !tbaa !9
  %692 = call i64 @llvm.fshl.i64(i64 %661, i64 %661, i64 50)
  %693 = call i64 @llvm.fshl.i64(i64 %661, i64 %661, i64 46)
  %694 = xor i64 %692, %693
  %695 = call i64 @llvm.fshl.i64(i64 %661, i64 %661, i64 23)
  %696 = xor i64 %694, %695
  %697 = and i64 %661, %617
  %698 = xor i64 %661, -1
  %699 = and i64 %573, %698
  %700 = or i64 %697, %699
  %701 = add i64 %700, %529
  %702 = add i64 %701, %696
  %703 = add i64 %702, %688
  %704 = add i64 %703, %691
  %705 = add i64 %704, %540
  %706 = call i64 @llvm.fshl.i64(i64 %672, i64 %672, i64 36)
  %707 = call i64 @llvm.fshl.i64(i64 %672, i64 %672, i64 30)
  %708 = xor i64 %706, %707
  %709 = call i64 @llvm.fshl.i64(i64 %672, i64 %672, i64 25)
  %710 = xor i64 %708, %709
  %711 = xor i64 %628, %584
  %712 = and i64 %672, %711
  %713 = and i64 %628, %584
  %714 = xor i64 %712, %713
  %715 = add i64 %710, %714
  %716 = add i64 %715, %704
  br i1 %.not, label %731, label %717

717:                                              ; preds = %687
  %718 = call i64 @llvm.fshl.i64(i64 %644, i64 %644, i64 45)
  %719 = call i64 @llvm.fshl.i64(i64 %644, i64 %644, i64 3)
  %720 = xor i64 %718, %719
  %721 = lshr i64 %644, 6
  %722 = xor i64 %720, %721
  %723 = add i64 %722, %424
  %724 = call i64 @llvm.fshl.i64(i64 %170, i64 %170, i64 63)
  %725 = call i64 @llvm.fshl.i64(i64 %170, i64 %170, i64 56)
  %726 = xor i64 %724, %725
  %727 = lshr i64 %170, 7
  %728 = xor i64 %726, %727
  %729 = add i64 %723, %172
  %730 = add i64 %729, %728
  br label %731

731:                                              ; preds = %687, %717
  %732 = phi i64 [ %730, %717 ], [ %172, %687 ]
  %733 = or disjoint i64 %indvars.iv, 12
  %734 = getelementptr inbounds i64, ptr %3, i64 %733
  %735 = load i64, ptr %734, align 8, !tbaa !9
  %736 = call i64 @llvm.fshl.i64(i64 %705, i64 %705, i64 50)
  %737 = call i64 @llvm.fshl.i64(i64 %705, i64 %705, i64 46)
  %738 = xor i64 %736, %737
  %739 = call i64 @llvm.fshl.i64(i64 %705, i64 %705, i64 23)
  %740 = xor i64 %738, %739
  %741 = and i64 %705, %661
  %742 = xor i64 %705, -1
  %743 = and i64 %617, %742
  %744 = or i64 %741, %743
  %745 = add i64 %744, %573
  %746 = add i64 %745, %740
  %747 = add i64 %746, %732
  %748 = add i64 %747, %735
  %749 = add i64 %748, %584
  %750 = call i64 @llvm.fshl.i64(i64 %716, i64 %716, i64 36)
  %751 = call i64 @llvm.fshl.i64(i64 %716, i64 %716, i64 30)
  %752 = xor i64 %750, %751
  %753 = call i64 @llvm.fshl.i64(i64 %716, i64 %716, i64 25)
  %754 = xor i64 %752, %753
  %755 = xor i64 %672, %628
  %756 = and i64 %716, %755
  %757 = and i64 %672, %628
  %758 = xor i64 %756, %757
  %759 = add i64 %754, %758
  %760 = add i64 %759, %748
  br i1 %.not, label %775, label %761

761:                                              ; preds = %731
  %762 = call i64 @llvm.fshl.i64(i64 %688, i64 %688, i64 45)
  %763 = call i64 @llvm.fshl.i64(i64 %688, i64 %688, i64 3)
  %764 = xor i64 %762, %763
  %765 = lshr i64 %688, 6
  %766 = xor i64 %764, %765
  %767 = add i64 %766, %468
  %768 = call i64 @llvm.fshl.i64(i64 %180, i64 %180, i64 63)
  %769 = call i64 @llvm.fshl.i64(i64 %180, i64 %180, i64 56)
  %770 = xor i64 %768, %769
  %771 = lshr i64 %180, 7
  %772 = xor i64 %770, %771
  %773 = add i64 %767, %170
  %774 = add i64 %773, %772
  br label %775

775:                                              ; preds = %731, %761
  %776 = phi i64 [ %774, %761 ], [ %170, %731 ]
  %777 = or disjoint i64 %indvars.iv, 13
  %778 = getelementptr inbounds i64, ptr %3, i64 %777
  %779 = load i64, ptr %778, align 8, !tbaa !9
  %780 = call i64 @llvm.fshl.i64(i64 %749, i64 %749, i64 50)
  %781 = call i64 @llvm.fshl.i64(i64 %749, i64 %749, i64 46)
  %782 = xor i64 %780, %781
  %783 = call i64 @llvm.fshl.i64(i64 %749, i64 %749, i64 23)
  %784 = xor i64 %782, %783
  %785 = and i64 %749, %705
  %786 = xor i64 %749, -1
  %787 = and i64 %661, %786
  %788 = or i64 %785, %787
  %789 = add i64 %788, %617
  %790 = add i64 %789, %784
  %791 = add i64 %790, %776
  %792 = add i64 %791, %779
  %793 = add i64 %792, %628
  %794 = call i64 @llvm.fshl.i64(i64 %760, i64 %760, i64 36)
  %795 = call i64 @llvm.fshl.i64(i64 %760, i64 %760, i64 30)
  %796 = xor i64 %794, %795
  %797 = call i64 @llvm.fshl.i64(i64 %760, i64 %760, i64 25)
  %798 = xor i64 %796, %797
  %799 = xor i64 %716, %672
  %800 = and i64 %760, %799
  %801 = and i64 %716, %672
  %802 = xor i64 %800, %801
  %803 = add i64 %798, %802
  %804 = add i64 %803, %792
  br i1 %.not, label %819, label %805

805:                                              ; preds = %775
  %806 = call i64 @llvm.fshl.i64(i64 %732, i64 %732, i64 45)
  %807 = call i64 @llvm.fshl.i64(i64 %732, i64 %732, i64 3)
  %808 = xor i64 %806, %807
  %809 = lshr i64 %732, 6
  %810 = xor i64 %808, %809
  %811 = add i64 %810, %512
  %812 = call i64 @llvm.fshl.i64(i64 %177, i64 %177, i64 63)
  %813 = call i64 @llvm.fshl.i64(i64 %177, i64 %177, i64 56)
  %814 = xor i64 %812, %813
  %815 = lshr i64 %177, 7
  %816 = xor i64 %814, %815
  %817 = add i64 %811, %180
  %818 = add i64 %817, %816
  br label %819

819:                                              ; preds = %775, %805
  %820 = phi i64 [ %818, %805 ], [ %180, %775 ]
  %821 = or disjoint i64 %indvars.iv, 14
  %822 = getelementptr inbounds i64, ptr %3, i64 %821
  %823 = load i64, ptr %822, align 8, !tbaa !9
  %824 = call i64 @llvm.fshl.i64(i64 %793, i64 %793, i64 50)
  %825 = call i64 @llvm.fshl.i64(i64 %793, i64 %793, i64 46)
  %826 = xor i64 %824, %825
  %827 = call i64 @llvm.fshl.i64(i64 %793, i64 %793, i64 23)
  %828 = xor i64 %826, %827
  %829 = and i64 %793, %749
  %830 = xor i64 %793, -1
  %831 = and i64 %705, %830
  %832 = or i64 %829, %831
  %833 = add i64 %832, %661
  %834 = add i64 %833, %828
  %835 = add i64 %834, %820
  %836 = add i64 %835, %823
  %837 = add i64 %836, %672
  %838 = call i64 @llvm.fshl.i64(i64 %804, i64 %804, i64 36)
  %839 = call i64 @llvm.fshl.i64(i64 %804, i64 %804, i64 30)
  %840 = xor i64 %838, %839
  %841 = call i64 @llvm.fshl.i64(i64 %804, i64 %804, i64 25)
  %842 = xor i64 %840, %841
  %843 = xor i64 %760, %716
  %844 = and i64 %804, %843
  %845 = and i64 %760, %716
  %846 = xor i64 %844, %845
  %847 = add i64 %842, %846
  %848 = add i64 %847, %836
  br i1 %.not, label %863, label %849

849:                                              ; preds = %819
  %850 = call i64 @llvm.fshl.i64(i64 %776, i64 %776, i64 45)
  %851 = call i64 @llvm.fshl.i64(i64 %776, i64 %776, i64 3)
  %852 = xor i64 %850, %851
  %853 = lshr i64 %776, 6
  %854 = xor i64 %852, %853
  %855 = add i64 %854, %556
  %856 = call i64 @llvm.fshl.i64(i64 %205, i64 %205, i64 63)
  %857 = call i64 @llvm.fshl.i64(i64 %205, i64 %205, i64 56)
  %858 = xor i64 %856, %857
  %859 = lshr i64 %205, 7
  %860 = xor i64 %858, %859
  %861 = add i64 %855, %177
  %862 = add i64 %861, %860
  br label %863

863:                                              ; preds = %819, %849
  %864 = phi i64 [ %862, %849 ], [ %177, %819 ]
  %865 = or disjoint i64 %indvars.iv, 15
  %866 = getelementptr inbounds i64, ptr %3, i64 %865
  %867 = load i64, ptr %866, align 8, !tbaa !9
  %868 = call i64 @llvm.fshl.i64(i64 %837, i64 %837, i64 50)
  %869 = call i64 @llvm.fshl.i64(i64 %837, i64 %837, i64 46)
  %870 = xor i64 %868, %869
  %871 = call i64 @llvm.fshl.i64(i64 %837, i64 %837, i64 23)
  %872 = xor i64 %870, %871
  %873 = and i64 %837, %793
  %874 = xor i64 %837, -1
  %875 = and i64 %749, %874
  %876 = or i64 %873, %875
  %877 = add i64 %876, %705
  %878 = add i64 %877, %872
  %879 = add i64 %878, %864
  %880 = add i64 %879, %867
  %881 = add i64 %880, %716
  %882 = call i64 @llvm.fshl.i64(i64 %848, i64 %848, i64 36)
  %883 = call i64 @llvm.fshl.i64(i64 %848, i64 %848, i64 30)
  %884 = xor i64 %882, %883
  %885 = call i64 @llvm.fshl.i64(i64 %848, i64 %848, i64 25)
  %886 = xor i64 %884, %885
  %887 = xor i64 %804, %760
  %888 = and i64 %848, %887
  %889 = and i64 %804, %760
  %890 = xor i64 %888, %889
  %891 = add i64 %886, %890
  %892 = add i64 %891, %880
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 16
  %893 = icmp ult i64 %indvars.iv, 64
  br i1 %893, label %165, label %894, !llvm.loop !11

894:                                              ; preds = %863
  %895 = load i64, ptr %0, align 8, !tbaa !9
  %896 = add i64 %895, %892
  store i64 %896, ptr %0, align 8, !tbaa !9
  %897 = load i64, ptr %14, align 8, !tbaa !9
  %898 = add i64 %897, %848
  store i64 %898, ptr %14, align 8, !tbaa !9
  %899 = load i64, ptr %15, align 8, !tbaa !9
  %900 = add i64 %899, %804
  store i64 %900, ptr %15, align 8, !tbaa !9
  %901 = load i64, ptr %16, align 8, !tbaa !9
  %902 = add i64 %901, %760
  store i64 %902, ptr %16, align 8, !tbaa !9
  %903 = load i64, ptr %17, align 8, !tbaa !9
  %904 = add i64 %903, %881
  store i64 %904, ptr %17, align 8, !tbaa !9
  %905 = load i64, ptr %18, align 8, !tbaa !9
  %906 = add i64 %905, %837
  store i64 %906, ptr %18, align 8, !tbaa !9
  %907 = load i64, ptr %19, align 8, !tbaa !9
  %908 = add i64 %907, %793
  store i64 %908, ptr %19, align 8, !tbaa !9
  %909 = load i64, ptr %20, align 8, !tbaa !9
  %910 = add i64 %909, %749
  store i64 %910, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %5) #4
  %911 = getelementptr inbounds i8, ptr %.079113, i64 128
  %912 = add nsw i32 %.0114, -128
  %913 = icmp sgt i32 %.0114, 255
  br i1 %913, label %21, label %._crit_edge, !llvm.loop !13

._crit_edge:                                      ; preds = %894, %4
  ret void
}

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @CopyBlock(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.fshl.i64(i64, i64, i64) #3

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint 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 #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long long", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}


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