; LLVM IR from imkcat/CatCrypto :: Sources/ModuleMaps/MD6 (md6_compress)

; 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 @md6_main_compression_loop(ptr noundef %0, i32 noundef %1) #0 {
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca i64, align 8
  %6 = alloca i64, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store i32 %1, ptr %4, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #2
  store i64 81985529216486895, ptr %6, align 8, !tbaa !11
  store i32 0, ptr %8, align 4, !tbaa !9
  store i32 89, ptr %7, align 4, !tbaa !9
  br label %9

9:                                                ; preds = %1081, %2
  %10 = load i32, ptr %8, align 4, !tbaa !9
  %11 = load i32, ptr %4, align 4, !tbaa !9
  %12 = mul nsw i32 %11, 16
  %13 = icmp slt i32 %10, %12
  br i1 %13, label %14, label %1084

14:                                               ; preds = %9
  %15 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %15, ptr %5, align 8, !tbaa !11
  %16 = load ptr, ptr %3, align 8, !tbaa !5
  %17 = load i32, ptr %7, align 4, !tbaa !9
  %18 = add nsw i32 %17, 0
  %19 = sub nsw i32 %18, 89
  %20 = sext i32 %19 to i64
  %21 = getelementptr inbounds i64, ptr %16, i64 %20
  %22 = load i64, ptr %21, align 8, !tbaa !11
  %23 = load i64, ptr %5, align 8, !tbaa !11
  %24 = xor i64 %23, %22
  store i64 %24, ptr %5, align 8, !tbaa !11
  %25 = load ptr, ptr %3, align 8, !tbaa !5
  %26 = load i32, ptr %7, align 4, !tbaa !9
  %27 = add nsw i32 %26, 0
  %28 = sub nsw i32 %27, 17
  %29 = sext i32 %28 to i64
  %30 = getelementptr inbounds i64, ptr %25, i64 %29
  %31 = load i64, ptr %30, align 8, !tbaa !11
  %32 = load i64, ptr %5, align 8, !tbaa !11
  %33 = xor i64 %32, %31
  store i64 %33, ptr %5, align 8, !tbaa !11
  %34 = load ptr, ptr %3, align 8, !tbaa !5
  %35 = load i32, ptr %7, align 4, !tbaa !9
  %36 = add nsw i32 %35, 0
  %37 = sub nsw i32 %36, 18
  %38 = sext i32 %37 to i64
  %39 = getelementptr inbounds i64, ptr %34, i64 %38
  %40 = load i64, ptr %39, align 8, !tbaa !11
  %41 = load ptr, ptr %3, align 8, !tbaa !5
  %42 = load i32, ptr %7, align 4, !tbaa !9
  %43 = add nsw i32 %42, 0
  %44 = sub nsw i32 %43, 21
  %45 = sext i32 %44 to i64
  %46 = getelementptr inbounds i64, ptr %41, i64 %45
  %47 = load i64, ptr %46, align 8, !tbaa !11
  %48 = and i64 %40, %47
  %49 = load i64, ptr %5, align 8, !tbaa !11
  %50 = xor i64 %49, %48
  store i64 %50, ptr %5, align 8, !tbaa !11
  %51 = load ptr, ptr %3, align 8, !tbaa !5
  %52 = load i32, ptr %7, align 4, !tbaa !9
  %53 = add nsw i32 %52, 0
  %54 = sub nsw i32 %53, 31
  %55 = sext i32 %54 to i64
  %56 = getelementptr inbounds i64, ptr %51, i64 %55
  %57 = load i64, ptr %56, align 8, !tbaa !11
  %58 = load ptr, ptr %3, align 8, !tbaa !5
  %59 = load i32, ptr %7, align 4, !tbaa !9
  %60 = add nsw i32 %59, 0
  %61 = sub nsw i32 %60, 67
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds i64, ptr %58, i64 %62
  %64 = load i64, ptr %63, align 8, !tbaa !11
  %65 = and i64 %57, %64
  %66 = load i64, ptr %5, align 8, !tbaa !11
  %67 = xor i64 %66, %65
  store i64 %67, ptr %5, align 8, !tbaa !11
  %68 = load i64, ptr %5, align 8, !tbaa !11
  %69 = lshr i64 %68, 10
  %70 = load i64, ptr %5, align 8, !tbaa !11
  %71 = xor i64 %70, %69
  store i64 %71, ptr %5, align 8, !tbaa !11
  %72 = load i64, ptr %5, align 8, !tbaa !11
  %73 = load i64, ptr %5, align 8, !tbaa !11
  %74 = shl i64 %73, 11
  %75 = xor i64 %72, %74
  %76 = load ptr, ptr %3, align 8, !tbaa !5
  %77 = load i32, ptr %7, align 4, !tbaa !9
  %78 = add nsw i32 %77, 0
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds i64, ptr %76, i64 %79
  store i64 %75, ptr %80, align 8, !tbaa !11
  %81 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %81, ptr %5, align 8, !tbaa !11
  %82 = load ptr, ptr %3, align 8, !tbaa !5
  %83 = load i32, ptr %7, align 4, !tbaa !9
  %84 = add nsw i32 %83, 1
  %85 = sub nsw i32 %84, 89
  %86 = sext i32 %85 to i64
  %87 = getelementptr inbounds i64, ptr %82, i64 %86
  %88 = load i64, ptr %87, align 8, !tbaa !11
  %89 = load i64, ptr %5, align 8, !tbaa !11
  %90 = xor i64 %89, %88
  store i64 %90, ptr %5, align 8, !tbaa !11
  %91 = load ptr, ptr %3, align 8, !tbaa !5
  %92 = load i32, ptr %7, align 4, !tbaa !9
  %93 = add nsw i32 %92, 1
  %94 = sub nsw i32 %93, 17
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds i64, ptr %91, i64 %95
  %97 = load i64, ptr %96, align 8, !tbaa !11
  %98 = load i64, ptr %5, align 8, !tbaa !11
  %99 = xor i64 %98, %97
  store i64 %99, ptr %5, align 8, !tbaa !11
  %100 = load ptr, ptr %3, align 8, !tbaa !5
  %101 = load i32, ptr %7, align 4, !tbaa !9
  %102 = add nsw i32 %101, 1
  %103 = sub nsw i32 %102, 18
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds i64, ptr %100, i64 %104
  %106 = load i64, ptr %105, align 8, !tbaa !11
  %107 = load ptr, ptr %3, align 8, !tbaa !5
  %108 = load i32, ptr %7, align 4, !tbaa !9
  %109 = add nsw i32 %108, 1
  %110 = sub nsw i32 %109, 21
  %111 = sext i32 %110 to i64
  %112 = getelementptr inbounds i64, ptr %107, i64 %111
  %113 = load i64, ptr %112, align 8, !tbaa !11
  %114 = and i64 %106, %113
  %115 = load i64, ptr %5, align 8, !tbaa !11
  %116 = xor i64 %115, %114
  store i64 %116, ptr %5, align 8, !tbaa !11
  %117 = load ptr, ptr %3, align 8, !tbaa !5
  %118 = load i32, ptr %7, align 4, !tbaa !9
  %119 = add nsw i32 %118, 1
  %120 = sub nsw i32 %119, 31
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds i64, ptr %117, i64 %121
  %123 = load i64, ptr %122, align 8, !tbaa !11
  %124 = load ptr, ptr %3, align 8, !tbaa !5
  %125 = load i32, ptr %7, align 4, !tbaa !9
  %126 = add nsw i32 %125, 1
  %127 = sub nsw i32 %126, 67
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds i64, ptr %124, i64 %128
  %130 = load i64, ptr %129, align 8, !tbaa !11
  %131 = and i64 %123, %130
  %132 = load i64, ptr %5, align 8, !tbaa !11
  %133 = xor i64 %132, %131
  store i64 %133, ptr %5, align 8, !tbaa !11
  %134 = load i64, ptr %5, align 8, !tbaa !11
  %135 = lshr i64 %134, 5
  %136 = load i64, ptr %5, align 8, !tbaa !11
  %137 = xor i64 %136, %135
  store i64 %137, ptr %5, align 8, !tbaa !11
  %138 = load i64, ptr %5, align 8, !tbaa !11
  %139 = load i64, ptr %5, align 8, !tbaa !11
  %140 = shl i64 %139, 24
  %141 = xor i64 %138, %140
  %142 = load ptr, ptr %3, align 8, !tbaa !5
  %143 = load i32, ptr %7, align 4, !tbaa !9
  %144 = add nsw i32 %143, 1
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds i64, ptr %142, i64 %145
  store i64 %141, ptr %146, align 8, !tbaa !11
  %147 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %147, ptr %5, align 8, !tbaa !11
  %148 = load ptr, ptr %3, align 8, !tbaa !5
  %149 = load i32, ptr %7, align 4, !tbaa !9
  %150 = add nsw i32 %149, 2
  %151 = sub nsw i32 %150, 89
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds i64, ptr %148, i64 %152
  %154 = load i64, ptr %153, align 8, !tbaa !11
  %155 = load i64, ptr %5, align 8, !tbaa !11
  %156 = xor i64 %155, %154
  store i64 %156, ptr %5, align 8, !tbaa !11
  %157 = load ptr, ptr %3, align 8, !tbaa !5
  %158 = load i32, ptr %7, align 4, !tbaa !9
  %159 = add nsw i32 %158, 2
  %160 = sub nsw i32 %159, 17
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds i64, ptr %157, i64 %161
  %163 = load i64, ptr %162, align 8, !tbaa !11
  %164 = load i64, ptr %5, align 8, !tbaa !11
  %165 = xor i64 %164, %163
  store i64 %165, ptr %5, align 8, !tbaa !11
  %166 = load ptr, ptr %3, align 8, !tbaa !5
  %167 = load i32, ptr %7, align 4, !tbaa !9
  %168 = add nsw i32 %167, 2
  %169 = sub nsw i32 %168, 18
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds i64, ptr %166, i64 %170
  %172 = load i64, ptr %171, align 8, !tbaa !11
  %173 = load ptr, ptr %3, align 8, !tbaa !5
  %174 = load i32, ptr %7, align 4, !tbaa !9
  %175 = add nsw i32 %174, 2
  %176 = sub nsw i32 %175, 21
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds i64, ptr %173, i64 %177
  %179 = load i64, ptr %178, align 8, !tbaa !11
  %180 = and i64 %172, %179
  %181 = load i64, ptr %5, align 8, !tbaa !11
  %182 = xor i64 %181, %180
  store i64 %182, ptr %5, align 8, !tbaa !11
  %183 = load ptr, ptr %3, align 8, !tbaa !5
  %184 = load i32, ptr %7, align 4, !tbaa !9
  %185 = add nsw i32 %184, 2
  %186 = sub nsw i32 %185, 31
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds i64, ptr %183, i64 %187
  %189 = load i64, ptr %188, align 8, !tbaa !11
  %190 = load ptr, ptr %3, align 8, !tbaa !5
  %191 = load i32, ptr %7, align 4, !tbaa !9
  %192 = add nsw i32 %191, 2
  %193 = sub nsw i32 %192, 67
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds i64, ptr %190, i64 %194
  %196 = load i64, ptr %195, align 8, !tbaa !11
  %197 = and i64 %189, %196
  %198 = load i64, ptr %5, align 8, !tbaa !11
  %199 = xor i64 %198, %197
  store i64 %199, ptr %5, align 8, !tbaa !11
  %200 = load i64, ptr %5, align 8, !tbaa !11
  %201 = lshr i64 %200, 13
  %202 = load i64, ptr %5, align 8, !tbaa !11
  %203 = xor i64 %202, %201
  store i64 %203, ptr %5, align 8, !tbaa !11
  %204 = load i64, ptr %5, align 8, !tbaa !11
  %205 = load i64, ptr %5, align 8, !tbaa !11
  %206 = shl i64 %205, 9
  %207 = xor i64 %204, %206
  %208 = load ptr, ptr %3, align 8, !tbaa !5
  %209 = load i32, ptr %7, align 4, !tbaa !9
  %210 = add nsw i32 %209, 2
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds i64, ptr %208, i64 %211
  store i64 %207, ptr %212, align 8, !tbaa !11
  %213 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %213, ptr %5, align 8, !tbaa !11
  %214 = load ptr, ptr %3, align 8, !tbaa !5
  %215 = load i32, ptr %7, align 4, !tbaa !9
  %216 = add nsw i32 %215, 3
  %217 = sub nsw i32 %216, 89
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds i64, ptr %214, i64 %218
  %220 = load i64, ptr %219, align 8, !tbaa !11
  %221 = load i64, ptr %5, align 8, !tbaa !11
  %222 = xor i64 %221, %220
  store i64 %222, ptr %5, align 8, !tbaa !11
  %223 = load ptr, ptr %3, align 8, !tbaa !5
  %224 = load i32, ptr %7, align 4, !tbaa !9
  %225 = add nsw i32 %224, 3
  %226 = sub nsw i32 %225, 17
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds i64, ptr %223, i64 %227
  %229 = load i64, ptr %228, align 8, !tbaa !11
  %230 = load i64, ptr %5, align 8, !tbaa !11
  %231 = xor i64 %230, %229
  store i64 %231, ptr %5, align 8, !tbaa !11
  %232 = load ptr, ptr %3, align 8, !tbaa !5
  %233 = load i32, ptr %7, align 4, !tbaa !9
  %234 = add nsw i32 %233, 3
  %235 = sub nsw i32 %234, 18
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds i64, ptr %232, i64 %236
  %238 = load i64, ptr %237, align 8, !tbaa !11
  %239 = load ptr, ptr %3, align 8, !tbaa !5
  %240 = load i32, ptr %7, align 4, !tbaa !9
  %241 = add nsw i32 %240, 3
  %242 = sub nsw i32 %241, 21
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds i64, ptr %239, i64 %243
  %245 = load i64, ptr %244, align 8, !tbaa !11
  %246 = and i64 %238, %245
  %247 = load i64, ptr %5, align 8, !tbaa !11
  %248 = xor i64 %247, %246
  store i64 %248, ptr %5, align 8, !tbaa !11
  %249 = load ptr, ptr %3, align 8, !tbaa !5
  %250 = load i32, ptr %7, align 4, !tbaa !9
  %251 = add nsw i32 %250, 3
  %252 = sub nsw i32 %251, 31
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds i64, ptr %249, i64 %253
  %255 = load i64, ptr %254, align 8, !tbaa !11
  %256 = load ptr, ptr %3, align 8, !tbaa !5
  %257 = load i32, ptr %7, align 4, !tbaa !9
  %258 = add nsw i32 %257, 3
  %259 = sub nsw i32 %258, 67
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds i64, ptr %256, i64 %260
  %262 = load i64, ptr %261, align 8, !tbaa !11
  %263 = and i64 %255, %262
  %264 = load i64, ptr %5, align 8, !tbaa !11
  %265 = xor i64 %264, %263
  store i64 %265, ptr %5, align 8, !tbaa !11
  %266 = load i64, ptr %5, align 8, !tbaa !11
  %267 = lshr i64 %266, 10
  %268 = load i64, ptr %5, align 8, !tbaa !11
  %269 = xor i64 %268, %267
  store i64 %269, ptr %5, align 8, !tbaa !11
  %270 = load i64, ptr %5, align 8, !tbaa !11
  %271 = load i64, ptr %5, align 8, !tbaa !11
  %272 = shl i64 %271, 16
  %273 = xor i64 %270, %272
  %274 = load ptr, ptr %3, align 8, !tbaa !5
  %275 = load i32, ptr %7, align 4, !tbaa !9
  %276 = add nsw i32 %275, 3
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds i64, ptr %274, i64 %277
  store i64 %273, ptr %278, align 8, !tbaa !11
  %279 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %279, ptr %5, align 8, !tbaa !11
  %280 = load ptr, ptr %3, align 8, !tbaa !5
  %281 = load i32, ptr %7, align 4, !tbaa !9
  %282 = add nsw i32 %281, 4
  %283 = sub nsw i32 %282, 89
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds i64, ptr %280, i64 %284
  %286 = load i64, ptr %285, align 8, !tbaa !11
  %287 = load i64, ptr %5, align 8, !tbaa !11
  %288 = xor i64 %287, %286
  store i64 %288, ptr %5, align 8, !tbaa !11
  %289 = load ptr, ptr %3, align 8, !tbaa !5
  %290 = load i32, ptr %7, align 4, !tbaa !9
  %291 = add nsw i32 %290, 4
  %292 = sub nsw i32 %291, 17
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds i64, ptr %289, i64 %293
  %295 = load i64, ptr %294, align 8, !tbaa !11
  %296 = load i64, ptr %5, align 8, !tbaa !11
  %297 = xor i64 %296, %295
  store i64 %297, ptr %5, align 8, !tbaa !11
  %298 = load ptr, ptr %3, align 8, !tbaa !5
  %299 = load i32, ptr %7, align 4, !tbaa !9
  %300 = add nsw i32 %299, 4
  %301 = sub nsw i32 %300, 18
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds i64, ptr %298, i64 %302
  %304 = load i64, ptr %303, align 8, !tbaa !11
  %305 = load ptr, ptr %3, align 8, !tbaa !5
  %306 = load i32, ptr %7, align 4, !tbaa !9
  %307 = add nsw i32 %306, 4
  %308 = sub nsw i32 %307, 21
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds i64, ptr %305, i64 %309
  %311 = load i64, ptr %310, align 8, !tbaa !11
  %312 = and i64 %304, %311
  %313 = load i64, ptr %5, align 8, !tbaa !11
  %314 = xor i64 %313, %312
  store i64 %314, ptr %5, align 8, !tbaa !11
  %315 = load ptr, ptr %3, align 8, !tbaa !5
  %316 = load i32, ptr %7, align 4, !tbaa !9
  %317 = add nsw i32 %316, 4
  %318 = sub nsw i32 %317, 31
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds i64, ptr %315, i64 %319
  %321 = load i64, ptr %320, align 8, !tbaa !11
  %322 = load ptr, ptr %3, align 8, !tbaa !5
  %323 = load i32, ptr %7, align 4, !tbaa !9
  %324 = add nsw i32 %323, 4
  %325 = sub nsw i32 %324, 67
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds i64, ptr %322, i64 %326
  %328 = load i64, ptr %327, align 8, !tbaa !11
  %329 = and i64 %321, %328
  %330 = load i64, ptr %5, align 8, !tbaa !11
  %331 = xor i64 %330, %329
  store i64 %331, ptr %5, align 8, !tbaa !11
  %332 = load i64, ptr %5, align 8, !tbaa !11
  %333 = lshr i64 %332, 11
  %334 = load i64, ptr %5, align 8, !tbaa !11
  %335 = xor i64 %334, %333
  store i64 %335, ptr %5, align 8, !tbaa !11
  %336 = load i64, ptr %5, align 8, !tbaa !11
  %337 = load i64, ptr %5, align 8, !tbaa !11
  %338 = shl i64 %337, 15
  %339 = xor i64 %336, %338
  %340 = load ptr, ptr %3, align 8, !tbaa !5
  %341 = load i32, ptr %7, align 4, !tbaa !9
  %342 = add nsw i32 %341, 4
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds i64, ptr %340, i64 %343
  store i64 %339, ptr %344, align 8, !tbaa !11
  %345 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %345, ptr %5, align 8, !tbaa !11
  %346 = load ptr, ptr %3, align 8, !tbaa !5
  %347 = load i32, ptr %7, align 4, !tbaa !9
  %348 = add nsw i32 %347, 5
  %349 = sub nsw i32 %348, 89
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds i64, ptr %346, i64 %350
  %352 = load i64, ptr %351, align 8, !tbaa !11
  %353 = load i64, ptr %5, align 8, !tbaa !11
  %354 = xor i64 %353, %352
  store i64 %354, ptr %5, align 8, !tbaa !11
  %355 = load ptr, ptr %3, align 8, !tbaa !5
  %356 = load i32, ptr %7, align 4, !tbaa !9
  %357 = add nsw i32 %356, 5
  %358 = sub nsw i32 %357, 17
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds i64, ptr %355, i64 %359
  %361 = load i64, ptr %360, align 8, !tbaa !11
  %362 = load i64, ptr %5, align 8, !tbaa !11
  %363 = xor i64 %362, %361
  store i64 %363, ptr %5, align 8, !tbaa !11
  %364 = load ptr, ptr %3, align 8, !tbaa !5
  %365 = load i32, ptr %7, align 4, !tbaa !9
  %366 = add nsw i32 %365, 5
  %367 = sub nsw i32 %366, 18
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds i64, ptr %364, i64 %368
  %370 = load i64, ptr %369, align 8, !tbaa !11
  %371 = load ptr, ptr %3, align 8, !tbaa !5
  %372 = load i32, ptr %7, align 4, !tbaa !9
  %373 = add nsw i32 %372, 5
  %374 = sub nsw i32 %373, 21
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds i64, ptr %371, i64 %375
  %377 = load i64, ptr %376, align 8, !tbaa !11
  %378 = and i64 %370, %377
  %379 = load i64, ptr %5, align 8, !tbaa !11
  %380 = xor i64 %379, %378
  store i64 %380, ptr %5, align 8, !tbaa !11
  %381 = load ptr, ptr %3, align 8, !tbaa !5
  %382 = load i32, ptr %7, align 4, !tbaa !9
  %383 = add nsw i32 %382, 5
  %384 = sub nsw i32 %383, 31
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds i64, ptr %381, i64 %385
  %387 = load i64, ptr %386, align 8, !tbaa !11
  %388 = load ptr, ptr %3, align 8, !tbaa !5
  %389 = load i32, ptr %7, align 4, !tbaa !9
  %390 = add nsw i32 %389, 5
  %391 = sub nsw i32 %390, 67
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds i64, ptr %388, i64 %392
  %394 = load i64, ptr %393, align 8, !tbaa !11
  %395 = and i64 %387, %394
  %396 = load i64, ptr %5, align 8, !tbaa !11
  %397 = xor i64 %396, %395
  store i64 %397, ptr %5, align 8, !tbaa !11
  %398 = load i64, ptr %5, align 8, !tbaa !11
  %399 = lshr i64 %398, 12
  %400 = load i64, ptr %5, align 8, !tbaa !11
  %401 = xor i64 %400, %399
  store i64 %401, ptr %5, align 8, !tbaa !11
  %402 = load i64, ptr %5, align 8, !tbaa !11
  %403 = load i64, ptr %5, align 8, !tbaa !11
  %404 = shl i64 %403, 9
  %405 = xor i64 %402, %404
  %406 = load ptr, ptr %3, align 8, !tbaa !5
  %407 = load i32, ptr %7, align 4, !tbaa !9
  %408 = add nsw i32 %407, 5
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds i64, ptr %406, i64 %409
  store i64 %405, ptr %410, align 8, !tbaa !11
  %411 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %411, ptr %5, align 8, !tbaa !11
  %412 = load ptr, ptr %3, align 8, !tbaa !5
  %413 = load i32, ptr %7, align 4, !tbaa !9
  %414 = add nsw i32 %413, 6
  %415 = sub nsw i32 %414, 89
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds i64, ptr %412, i64 %416
  %418 = load i64, ptr %417, align 8, !tbaa !11
  %419 = load i64, ptr %5, align 8, !tbaa !11
  %420 = xor i64 %419, %418
  store i64 %420, ptr %5, align 8, !tbaa !11
  %421 = load ptr, ptr %3, align 8, !tbaa !5
  %422 = load i32, ptr %7, align 4, !tbaa !9
  %423 = add nsw i32 %422, 6
  %424 = sub nsw i32 %423, 17
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds i64, ptr %421, i64 %425
  %427 = load i64, ptr %426, align 8, !tbaa !11
  %428 = load i64, ptr %5, align 8, !tbaa !11
  %429 = xor i64 %428, %427
  store i64 %429, ptr %5, align 8, !tbaa !11
  %430 = load ptr, ptr %3, align 8, !tbaa !5
  %431 = load i32, ptr %7, align 4, !tbaa !9
  %432 = add nsw i32 %431, 6
  %433 = sub nsw i32 %432, 18
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds i64, ptr %430, i64 %434
  %436 = load i64, ptr %435, align 8, !tbaa !11
  %437 = load ptr, ptr %3, align 8, !tbaa !5
  %438 = load i32, ptr %7, align 4, !tbaa !9
  %439 = add nsw i32 %438, 6
  %440 = sub nsw i32 %439, 21
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds i64, ptr %437, i64 %441
  %443 = load i64, ptr %442, align 8, !tbaa !11
  %444 = and i64 %436, %443
  %445 = load i64, ptr %5, align 8, !tbaa !11
  %446 = xor i64 %445, %444
  store i64 %446, ptr %5, align 8, !tbaa !11
  %447 = load ptr, ptr %3, align 8, !tbaa !5
  %448 = load i32, ptr %7, align 4, !tbaa !9
  %449 = add nsw i32 %448, 6
  %450 = sub nsw i32 %449, 31
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds i64, ptr %447, i64 %451
  %453 = load i64, ptr %452, align 8, !tbaa !11
  %454 = load ptr, ptr %3, align 8, !tbaa !5
  %455 = load i32, ptr %7, align 4, !tbaa !9
  %456 = add nsw i32 %455, 6
  %457 = sub nsw i32 %456, 67
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds i64, ptr %454, i64 %458
  %460 = load i64, ptr %459, align 8, !tbaa !11
  %461 = and i64 %453, %460
  %462 = load i64, ptr %5, align 8, !tbaa !11
  %463 = xor i64 %462, %461
  store i64 %463, ptr %5, align 8, !tbaa !11
  %464 = load i64, ptr %5, align 8, !tbaa !11
  %465 = lshr i64 %464, 2
  %466 = load i64, ptr %5, align 8, !tbaa !11
  %467 = xor i64 %466, %465
  store i64 %467, ptr %5, align 8, !tbaa !11
  %468 = load i64, ptr %5, align 8, !tbaa !11
  %469 = load i64, ptr %5, align 8, !tbaa !11
  %470 = shl i64 %469, 27
  %471 = xor i64 %468, %470
  %472 = load ptr, ptr %3, align 8, !tbaa !5
  %473 = load i32, ptr %7, align 4, !tbaa !9
  %474 = add nsw i32 %473, 6
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds i64, ptr %472, i64 %475
  store i64 %471, ptr %476, align 8, !tbaa !11
  %477 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %477, ptr %5, align 8, !tbaa !11
  %478 = load ptr, ptr %3, align 8, !tbaa !5
  %479 = load i32, ptr %7, align 4, !tbaa !9
  %480 = add nsw i32 %479, 7
  %481 = sub nsw i32 %480, 89
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds i64, ptr %478, i64 %482
  %484 = load i64, ptr %483, align 8, !tbaa !11
  %485 = load i64, ptr %5, align 8, !tbaa !11
  %486 = xor i64 %485, %484
  store i64 %486, ptr %5, align 8, !tbaa !11
  %487 = load ptr, ptr %3, align 8, !tbaa !5
  %488 = load i32, ptr %7, align 4, !tbaa !9
  %489 = add nsw i32 %488, 7
  %490 = sub nsw i32 %489, 17
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds i64, ptr %487, i64 %491
  %493 = load i64, ptr %492, align 8, !tbaa !11
  %494 = load i64, ptr %5, align 8, !tbaa !11
  %495 = xor i64 %494, %493
  store i64 %495, ptr %5, align 8, !tbaa !11
  %496 = load ptr, ptr %3, align 8, !tbaa !5
  %497 = load i32, ptr %7, align 4, !tbaa !9
  %498 = add nsw i32 %497, 7
  %499 = sub nsw i32 %498, 18
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds i64, ptr %496, i64 %500
  %502 = load i64, ptr %501, align 8, !tbaa !11
  %503 = load ptr, ptr %3, align 8, !tbaa !5
  %504 = load i32, ptr %7, align 4, !tbaa !9
  %505 = add nsw i32 %504, 7
  %506 = sub nsw i32 %505, 21
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds i64, ptr %503, i64 %507
  %509 = load i64, ptr %508, align 8, !tbaa !11
  %510 = and i64 %502, %509
  %511 = load i64, ptr %5, align 8, !tbaa !11
  %512 = xor i64 %511, %510
  store i64 %512, ptr %5, align 8, !tbaa !11
  %513 = load ptr, ptr %3, align 8, !tbaa !5
  %514 = load i32, ptr %7, align 4, !tbaa !9
  %515 = add nsw i32 %514, 7
  %516 = sub nsw i32 %515, 31
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds i64, ptr %513, i64 %517
  %519 = load i64, ptr %518, align 8, !tbaa !11
  %520 = load ptr, ptr %3, align 8, !tbaa !5
  %521 = load i32, ptr %7, align 4, !tbaa !9
  %522 = add nsw i32 %521, 7
  %523 = sub nsw i32 %522, 67
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds i64, ptr %520, i64 %524
  %526 = load i64, ptr %525, align 8, !tbaa !11
  %527 = and i64 %519, %526
  %528 = load i64, ptr %5, align 8, !tbaa !11
  %529 = xor i64 %528, %527
  store i64 %529, ptr %5, align 8, !tbaa !11
  %530 = load i64, ptr %5, align 8, !tbaa !11
  %531 = lshr i64 %530, 7
  %532 = load i64, ptr %5, align 8, !tbaa !11
  %533 = xor i64 %532, %531
  store i64 %533, ptr %5, align 8, !tbaa !11
  %534 = load i64, ptr %5, align 8, !tbaa !11
  %535 = load i64, ptr %5, align 8, !tbaa !11
  %536 = shl i64 %535, 15
  %537 = xor i64 %534, %536
  %538 = load ptr, ptr %3, align 8, !tbaa !5
  %539 = load i32, ptr %7, align 4, !tbaa !9
  %540 = add nsw i32 %539, 7
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds i64, ptr %538, i64 %541
  store i64 %537, ptr %542, align 8, !tbaa !11
  %543 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %543, ptr %5, align 8, !tbaa !11
  %544 = load ptr, ptr %3, align 8, !tbaa !5
  %545 = load i32, ptr %7, align 4, !tbaa !9
  %546 = add nsw i32 %545, 8
  %547 = sub nsw i32 %546, 89
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds i64, ptr %544, i64 %548
  %550 = load i64, ptr %549, align 8, !tbaa !11
  %551 = load i64, ptr %5, align 8, !tbaa !11
  %552 = xor i64 %551, %550
  store i64 %552, ptr %5, align 8, !tbaa !11
  %553 = load ptr, ptr %3, align 8, !tbaa !5
  %554 = load i32, ptr %7, align 4, !tbaa !9
  %555 = add nsw i32 %554, 8
  %556 = sub nsw i32 %555, 17
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds i64, ptr %553, i64 %557
  %559 = load i64, ptr %558, align 8, !tbaa !11
  %560 = load i64, ptr %5, align 8, !tbaa !11
  %561 = xor i64 %560, %559
  store i64 %561, ptr %5, align 8, !tbaa !11
  %562 = load ptr, ptr %3, align 8, !tbaa !5
  %563 = load i32, ptr %7, align 4, !tbaa !9
  %564 = add nsw i32 %563, 8
  %565 = sub nsw i32 %564, 18
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds i64, ptr %562, i64 %566
  %568 = load i64, ptr %567, align 8, !tbaa !11
  %569 = load ptr, ptr %3, align 8, !tbaa !5
  %570 = load i32, ptr %7, align 4, !tbaa !9
  %571 = add nsw i32 %570, 8
  %572 = sub nsw i32 %571, 21
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds i64, ptr %569, i64 %573
  %575 = load i64, ptr %574, align 8, !tbaa !11
  %576 = and i64 %568, %575
  %577 = load i64, ptr %5, align 8, !tbaa !11
  %578 = xor i64 %577, %576
  store i64 %578, ptr %5, align 8, !tbaa !11
  %579 = load ptr, ptr %3, align 8, !tbaa !5
  %580 = load i32, ptr %7, align 4, !tbaa !9
  %581 = add nsw i32 %580, 8
  %582 = sub nsw i32 %581, 31
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds i64, ptr %579, i64 %583
  %585 = load i64, ptr %584, align 8, !tbaa !11
  %586 = load ptr, ptr %3, align 8, !tbaa !5
  %587 = load i32, ptr %7, align 4, !tbaa !9
  %588 = add nsw i32 %587, 8
  %589 = sub nsw i32 %588, 67
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds i64, ptr %586, i64 %590
  %592 = load i64, ptr %591, align 8, !tbaa !11
  %593 = and i64 %585, %592
  %594 = load i64, ptr %5, align 8, !tbaa !11
  %595 = xor i64 %594, %593
  store i64 %595, ptr %5, align 8, !tbaa !11
  %596 = load i64, ptr %5, align 8, !tbaa !11
  %597 = lshr i64 %596, 14
  %598 = load i64, ptr %5, align 8, !tbaa !11
  %599 = xor i64 %598, %597
  store i64 %599, ptr %5, align 8, !tbaa !11
  %600 = load i64, ptr %5, align 8, !tbaa !11
  %601 = load i64, ptr %5, align 8, !tbaa !11
  %602 = shl i64 %601, 6
  %603 = xor i64 %600, %602
  %604 = load ptr, ptr %3, align 8, !tbaa !5
  %605 = load i32, ptr %7, align 4, !tbaa !9
  %606 = add nsw i32 %605, 8
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds i64, ptr %604, i64 %607
  store i64 %603, ptr %608, align 8, !tbaa !11
  %609 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %609, ptr %5, align 8, !tbaa !11
  %610 = load ptr, ptr %3, align 8, !tbaa !5
  %611 = load i32, ptr %7, align 4, !tbaa !9
  %612 = add nsw i32 %611, 9
  %613 = sub nsw i32 %612, 89
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds i64, ptr %610, i64 %614
  %616 = load i64, ptr %615, align 8, !tbaa !11
  %617 = load i64, ptr %5, align 8, !tbaa !11
  %618 = xor i64 %617, %616
  store i64 %618, ptr %5, align 8, !tbaa !11
  %619 = load ptr, ptr %3, align 8, !tbaa !5
  %620 = load i32, ptr %7, align 4, !tbaa !9
  %621 = add nsw i32 %620, 9
  %622 = sub nsw i32 %621, 17
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds i64, ptr %619, i64 %623
  %625 = load i64, ptr %624, align 8, !tbaa !11
  %626 = load i64, ptr %5, align 8, !tbaa !11
  %627 = xor i64 %626, %625
  store i64 %627, ptr %5, align 8, !tbaa !11
  %628 = load ptr, ptr %3, align 8, !tbaa !5
  %629 = load i32, ptr %7, align 4, !tbaa !9
  %630 = add nsw i32 %629, 9
  %631 = sub nsw i32 %630, 18
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds i64, ptr %628, i64 %632
  %634 = load i64, ptr %633, align 8, !tbaa !11
  %635 = load ptr, ptr %3, align 8, !tbaa !5
  %636 = load i32, ptr %7, align 4, !tbaa !9
  %637 = add nsw i32 %636, 9
  %638 = sub nsw i32 %637, 21
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds i64, ptr %635, i64 %639
  %641 = load i64, ptr %640, align 8, !tbaa !11
  %642 = and i64 %634, %641
  %643 = load i64, ptr %5, align 8, !tbaa !11
  %644 = xor i64 %643, %642
  store i64 %644, ptr %5, align 8, !tbaa !11
  %645 = load ptr, ptr %3, align 8, !tbaa !5
  %646 = load i32, ptr %7, align 4, !tbaa !9
  %647 = add nsw i32 %646, 9
  %648 = sub nsw i32 %647, 31
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds i64, ptr %645, i64 %649
  %651 = load i64, ptr %650, align 8, !tbaa !11
  %652 = load ptr, ptr %3, align 8, !tbaa !5
  %653 = load i32, ptr %7, align 4, !tbaa !9
  %654 = add nsw i32 %653, 9
  %655 = sub nsw i32 %654, 67
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds i64, ptr %652, i64 %656
  %658 = load i64, ptr %657, align 8, !tbaa !11
  %659 = and i64 %651, %658
  %660 = load i64, ptr %5, align 8, !tbaa !11
  %661 = xor i64 %660, %659
  store i64 %661, ptr %5, align 8, !tbaa !11
  %662 = load i64, ptr %5, align 8, !tbaa !11
  %663 = lshr i64 %662, 15
  %664 = load i64, ptr %5, align 8, !tbaa !11
  %665 = xor i64 %664, %663
  store i64 %665, ptr %5, align 8, !tbaa !11
  %666 = load i64, ptr %5, align 8, !tbaa !11
  %667 = load i64, ptr %5, align 8, !tbaa !11
  %668 = shl i64 %667, 2
  %669 = xor i64 %666, %668
  %670 = load ptr, ptr %3, align 8, !tbaa !5
  %671 = load i32, ptr %7, align 4, !tbaa !9
  %672 = add nsw i32 %671, 9
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds i64, ptr %670, i64 %673
  store i64 %669, ptr %674, align 8, !tbaa !11
  %675 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %675, ptr %5, align 8, !tbaa !11
  %676 = load ptr, ptr %3, align 8, !tbaa !5
  %677 = load i32, ptr %7, align 4, !tbaa !9
  %678 = add nsw i32 %677, 10
  %679 = sub nsw i32 %678, 89
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds i64, ptr %676, i64 %680
  %682 = load i64, ptr %681, align 8, !tbaa !11
  %683 = load i64, ptr %5, align 8, !tbaa !11
  %684 = xor i64 %683, %682
  store i64 %684, ptr %5, align 8, !tbaa !11
  %685 = load ptr, ptr %3, align 8, !tbaa !5
  %686 = load i32, ptr %7, align 4, !tbaa !9
  %687 = add nsw i32 %686, 10
  %688 = sub nsw i32 %687, 17
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds i64, ptr %685, i64 %689
  %691 = load i64, ptr %690, align 8, !tbaa !11
  %692 = load i64, ptr %5, align 8, !tbaa !11
  %693 = xor i64 %692, %691
  store i64 %693, ptr %5, align 8, !tbaa !11
  %694 = load ptr, ptr %3, align 8, !tbaa !5
  %695 = load i32, ptr %7, align 4, !tbaa !9
  %696 = add nsw i32 %695, 10
  %697 = sub nsw i32 %696, 18
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds i64, ptr %694, i64 %698
  %700 = load i64, ptr %699, align 8, !tbaa !11
  %701 = load ptr, ptr %3, align 8, !tbaa !5
  %702 = load i32, ptr %7, align 4, !tbaa !9
  %703 = add nsw i32 %702, 10
  %704 = sub nsw i32 %703, 21
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds i64, ptr %701, i64 %705
  %707 = load i64, ptr %706, align 8, !tbaa !11
  %708 = and i64 %700, %707
  %709 = load i64, ptr %5, align 8, !tbaa !11
  %710 = xor i64 %709, %708
  store i64 %710, ptr %5, align 8, !tbaa !11
  %711 = load ptr, ptr %3, align 8, !tbaa !5
  %712 = load i32, ptr %7, align 4, !tbaa !9
  %713 = add nsw i32 %712, 10
  %714 = sub nsw i32 %713, 31
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds i64, ptr %711, i64 %715
  %717 = load i64, ptr %716, align 8, !tbaa !11
  %718 = load ptr, ptr %3, align 8, !tbaa !5
  %719 = load i32, ptr %7, align 4, !tbaa !9
  %720 = add nsw i32 %719, 10
  %721 = sub nsw i32 %720, 67
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds i64, ptr %718, i64 %722
  %724 = load i64, ptr %723, align 8, !tbaa !11
  %725 = and i64 %717, %724
  %726 = load i64, ptr %5, align 8, !tbaa !11
  %727 = xor i64 %726, %725
  store i64 %727, ptr %5, align 8, !tbaa !11
  %728 = load i64, ptr %5, align 8, !tbaa !11
  %729 = lshr i64 %728, 7
  %730 = load i64, ptr %5, align 8, !tbaa !11
  %731 = xor i64 %730, %729
  store i64 %731, ptr %5, align 8, !tbaa !11
  %732 = load i64, ptr %5, align 8, !tbaa !11
  %733 = load i64, ptr %5, align 8, !tbaa !11
  %734 = shl i64 %733, 29
  %735 = xor i64 %732, %734
  %736 = load ptr, ptr %3, align 8, !tbaa !5
  %737 = load i32, ptr %7, align 4, !tbaa !9
  %738 = add nsw i32 %737, 10
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds i64, ptr %736, i64 %739
  store i64 %735, ptr %740, align 8, !tbaa !11
  %741 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %741, ptr %5, align 8, !tbaa !11
  %742 = load ptr, ptr %3, align 8, !tbaa !5
  %743 = load i32, ptr %7, align 4, !tbaa !9
  %744 = add nsw i32 %743, 11
  %745 = sub nsw i32 %744, 89
  %746 = sext i32 %745 to i64
  %747 = getelementptr inbounds i64, ptr %742, i64 %746
  %748 = load i64, ptr %747, align 8, !tbaa !11
  %749 = load i64, ptr %5, align 8, !tbaa !11
  %750 = xor i64 %749, %748
  store i64 %750, ptr %5, align 8, !tbaa !11
  %751 = load ptr, ptr %3, align 8, !tbaa !5
  %752 = load i32, ptr %7, align 4, !tbaa !9
  %753 = add nsw i32 %752, 11
  %754 = sub nsw i32 %753, 17
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds i64, ptr %751, i64 %755
  %757 = load i64, ptr %756, align 8, !tbaa !11
  %758 = load i64, ptr %5, align 8, !tbaa !11
  %759 = xor i64 %758, %757
  store i64 %759, ptr %5, align 8, !tbaa !11
  %760 = load ptr, ptr %3, align 8, !tbaa !5
  %761 = load i32, ptr %7, align 4, !tbaa !9
  %762 = add nsw i32 %761, 11
  %763 = sub nsw i32 %762, 18
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds i64, ptr %760, i64 %764
  %766 = load i64, ptr %765, align 8, !tbaa !11
  %767 = load ptr, ptr %3, align 8, !tbaa !5
  %768 = load i32, ptr %7, align 4, !tbaa !9
  %769 = add nsw i32 %768, 11
  %770 = sub nsw i32 %769, 21
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds i64, ptr %767, i64 %771
  %773 = load i64, ptr %772, align 8, !tbaa !11
  %774 = and i64 %766, %773
  %775 = load i64, ptr %5, align 8, !tbaa !11
  %776 = xor i64 %775, %774
  store i64 %776, ptr %5, align 8, !tbaa !11
  %777 = load ptr, ptr %3, align 8, !tbaa !5
  %778 = load i32, ptr %7, align 4, !tbaa !9
  %779 = add nsw i32 %778, 11
  %780 = sub nsw i32 %779, 31
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds i64, ptr %777, i64 %781
  %783 = load i64, ptr %782, align 8, !tbaa !11
  %784 = load ptr, ptr %3, align 8, !tbaa !5
  %785 = load i32, ptr %7, align 4, !tbaa !9
  %786 = add nsw i32 %785, 11
  %787 = sub nsw i32 %786, 67
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds i64, ptr %784, i64 %788
  %790 = load i64, ptr %789, align 8, !tbaa !11
  %791 = and i64 %783, %790
  %792 = load i64, ptr %5, align 8, !tbaa !11
  %793 = xor i64 %792, %791
  store i64 %793, ptr %5, align 8, !tbaa !11
  %794 = load i64, ptr %5, align 8, !tbaa !11
  %795 = lshr i64 %794, 13
  %796 = load i64, ptr %5, align 8, !tbaa !11
  %797 = xor i64 %796, %795
  store i64 %797, ptr %5, align 8, !tbaa !11
  %798 = load i64, ptr %5, align 8, !tbaa !11
  %799 = load i64, ptr %5, align 8, !tbaa !11
  %800 = shl i64 %799, 8
  %801 = xor i64 %798, %800
  %802 = load ptr, ptr %3, align 8, !tbaa !5
  %803 = load i32, ptr %7, align 4, !tbaa !9
  %804 = add nsw i32 %803, 11
  %805 = sext i32 %804 to i64
  %806 = getelementptr inbounds i64, ptr %802, i64 %805
  store i64 %801, ptr %806, align 8, !tbaa !11
  %807 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %807, ptr %5, align 8, !tbaa !11
  %808 = load ptr, ptr %3, align 8, !tbaa !5
  %809 = load i32, ptr %7, align 4, !tbaa !9
  %810 = add nsw i32 %809, 12
  %811 = sub nsw i32 %810, 89
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds i64, ptr %808, i64 %812
  %814 = load i64, ptr %813, align 8, !tbaa !11
  %815 = load i64, ptr %5, align 8, !tbaa !11
  %816 = xor i64 %815, %814
  store i64 %816, ptr %5, align 8, !tbaa !11
  %817 = load ptr, ptr %3, align 8, !tbaa !5
  %818 = load i32, ptr %7, align 4, !tbaa !9
  %819 = add nsw i32 %818, 12
  %820 = sub nsw i32 %819, 17
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds i64, ptr %817, i64 %821
  %823 = load i64, ptr %822, align 8, !tbaa !11
  %824 = load i64, ptr %5, align 8, !tbaa !11
  %825 = xor i64 %824, %823
  store i64 %825, ptr %5, align 8, !tbaa !11
  %826 = load ptr, ptr %3, align 8, !tbaa !5
  %827 = load i32, ptr %7, align 4, !tbaa !9
  %828 = add nsw i32 %827, 12
  %829 = sub nsw i32 %828, 18
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds i64, ptr %826, i64 %830
  %832 = load i64, ptr %831, align 8, !tbaa !11
  %833 = load ptr, ptr %3, align 8, !tbaa !5
  %834 = load i32, ptr %7, align 4, !tbaa !9
  %835 = add nsw i32 %834, 12
  %836 = sub nsw i32 %835, 21
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds i64, ptr %833, i64 %837
  %839 = load i64, ptr %838, align 8, !tbaa !11
  %840 = and i64 %832, %839
  %841 = load i64, ptr %5, align 8, !tbaa !11
  %842 = xor i64 %841, %840
  store i64 %842, ptr %5, align 8, !tbaa !11
  %843 = load ptr, ptr %3, align 8, !tbaa !5
  %844 = load i32, ptr %7, align 4, !tbaa !9
  %845 = add nsw i32 %844, 12
  %846 = sub nsw i32 %845, 31
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds i64, ptr %843, i64 %847
  %849 = load i64, ptr %848, align 8, !tbaa !11
  %850 = load ptr, ptr %3, align 8, !tbaa !5
  %851 = load i32, ptr %7, align 4, !tbaa !9
  %852 = add nsw i32 %851, 12
  %853 = sub nsw i32 %852, 67
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds i64, ptr %850, i64 %854
  %856 = load i64, ptr %855, align 8, !tbaa !11
  %857 = and i64 %849, %856
  %858 = load i64, ptr %5, align 8, !tbaa !11
  %859 = xor i64 %858, %857
  store i64 %859, ptr %5, align 8, !tbaa !11
  %860 = load i64, ptr %5, align 8, !tbaa !11
  %861 = lshr i64 %860, 11
  %862 = load i64, ptr %5, align 8, !tbaa !11
  %863 = xor i64 %862, %861
  store i64 %863, ptr %5, align 8, !tbaa !11
  %864 = load i64, ptr %5, align 8, !tbaa !11
  %865 = load i64, ptr %5, align 8, !tbaa !11
  %866 = shl i64 %865, 15
  %867 = xor i64 %864, %866
  %868 = load ptr, ptr %3, align 8, !tbaa !5
  %869 = load i32, ptr %7, align 4, !tbaa !9
  %870 = add nsw i32 %869, 12
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds i64, ptr %868, i64 %871
  store i64 %867, ptr %872, align 8, !tbaa !11
  %873 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %873, ptr %5, align 8, !tbaa !11
  %874 = load ptr, ptr %3, align 8, !tbaa !5
  %875 = load i32, ptr %7, align 4, !tbaa !9
  %876 = add nsw i32 %875, 13
  %877 = sub nsw i32 %876, 89
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds i64, ptr %874, i64 %878
  %880 = load i64, ptr %879, align 8, !tbaa !11
  %881 = load i64, ptr %5, align 8, !tbaa !11
  %882 = xor i64 %881, %880
  store i64 %882, ptr %5, align 8, !tbaa !11
  %883 = load ptr, ptr %3, align 8, !tbaa !5
  %884 = load i32, ptr %7, align 4, !tbaa !9
  %885 = add nsw i32 %884, 13
  %886 = sub nsw i32 %885, 17
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds i64, ptr %883, i64 %887
  %889 = load i64, ptr %888, align 8, !tbaa !11
  %890 = load i64, ptr %5, align 8, !tbaa !11
  %891 = xor i64 %890, %889
  store i64 %891, ptr %5, align 8, !tbaa !11
  %892 = load ptr, ptr %3, align 8, !tbaa !5
  %893 = load i32, ptr %7, align 4, !tbaa !9
  %894 = add nsw i32 %893, 13
  %895 = sub nsw i32 %894, 18
  %896 = sext i32 %895 to i64
  %897 = getelementptr inbounds i64, ptr %892, i64 %896
  %898 = load i64, ptr %897, align 8, !tbaa !11
  %899 = load ptr, ptr %3, align 8, !tbaa !5
  %900 = load i32, ptr %7, align 4, !tbaa !9
  %901 = add nsw i32 %900, 13
  %902 = sub nsw i32 %901, 21
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds i64, ptr %899, i64 %903
  %905 = load i64, ptr %904, align 8, !tbaa !11
  %906 = and i64 %898, %905
  %907 = load i64, ptr %5, align 8, !tbaa !11
  %908 = xor i64 %907, %906
  store i64 %908, ptr %5, align 8, !tbaa !11
  %909 = load ptr, ptr %3, align 8, !tbaa !5
  %910 = load i32, ptr %7, align 4, !tbaa !9
  %911 = add nsw i32 %910, 13
  %912 = sub nsw i32 %911, 31
  %913 = sext i32 %912 to i64
  %914 = getelementptr inbounds i64, ptr %909, i64 %913
  %915 = load i64, ptr %914, align 8, !tbaa !11
  %916 = load ptr, ptr %3, align 8, !tbaa !5
  %917 = load i32, ptr %7, align 4, !tbaa !9
  %918 = add nsw i32 %917, 13
  %919 = sub nsw i32 %918, 67
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds i64, ptr %916, i64 %920
  %922 = load i64, ptr %921, align 8, !tbaa !11
  %923 = and i64 %915, %922
  %924 = load i64, ptr %5, align 8, !tbaa !11
  %925 = xor i64 %924, %923
  store i64 %925, ptr %5, align 8, !tbaa !11
  %926 = load i64, ptr %5, align 8, !tbaa !11
  %927 = lshr i64 %926, 7
  %928 = load i64, ptr %5, align 8, !tbaa !11
  %929 = xor i64 %928, %927
  store i64 %929, ptr %5, align 8, !tbaa !11
  %930 = load i64, ptr %5, align 8, !tbaa !11
  %931 = load i64, ptr %5, align 8, !tbaa !11
  %932 = shl i64 %931, 5
  %933 = xor i64 %930, %932
  %934 = load ptr, ptr %3, align 8, !tbaa !5
  %935 = load i32, ptr %7, align 4, !tbaa !9
  %936 = add nsw i32 %935, 13
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds i64, ptr %934, i64 %937
  store i64 %933, ptr %938, align 8, !tbaa !11
  %939 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %939, ptr %5, align 8, !tbaa !11
  %940 = load ptr, ptr %3, align 8, !tbaa !5
  %941 = load i32, ptr %7, align 4, !tbaa !9
  %942 = add nsw i32 %941, 14
  %943 = sub nsw i32 %942, 89
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds i64, ptr %940, i64 %944
  %946 = load i64, ptr %945, align 8, !tbaa !11
  %947 = load i64, ptr %5, align 8, !tbaa !11
  %948 = xor i64 %947, %946
  store i64 %948, ptr %5, align 8, !tbaa !11
  %949 = load ptr, ptr %3, align 8, !tbaa !5
  %950 = load i32, ptr %7, align 4, !tbaa !9
  %951 = add nsw i32 %950, 14
  %952 = sub nsw i32 %951, 17
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds i64, ptr %949, i64 %953
  %955 = load i64, ptr %954, align 8, !tbaa !11
  %956 = load i64, ptr %5, align 8, !tbaa !11
  %957 = xor i64 %956, %955
  store i64 %957, ptr %5, align 8, !tbaa !11
  %958 = load ptr, ptr %3, align 8, !tbaa !5
  %959 = load i32, ptr %7, align 4, !tbaa !9
  %960 = add nsw i32 %959, 14
  %961 = sub nsw i32 %960, 18
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds i64, ptr %958, i64 %962
  %964 = load i64, ptr %963, align 8, !tbaa !11
  %965 = load ptr, ptr %3, align 8, !tbaa !5
  %966 = load i32, ptr %7, align 4, !tbaa !9
  %967 = add nsw i32 %966, 14
  %968 = sub nsw i32 %967, 21
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds i64, ptr %965, i64 %969
  %971 = load i64, ptr %970, align 8, !tbaa !11
  %972 = and i64 %964, %971
  %973 = load i64, ptr %5, align 8, !tbaa !11
  %974 = xor i64 %973, %972
  store i64 %974, ptr %5, align 8, !tbaa !11
  %975 = load ptr, ptr %3, align 8, !tbaa !5
  %976 = load i32, ptr %7, align 4, !tbaa !9
  %977 = add nsw i32 %976, 14
  %978 = sub nsw i32 %977, 31
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds i64, ptr %975, i64 %979
  %981 = load i64, ptr %980, align 8, !tbaa !11
  %982 = load ptr, ptr %3, align 8, !tbaa !5
  %983 = load i32, ptr %7, align 4, !tbaa !9
  %984 = add nsw i32 %983, 14
  %985 = sub nsw i32 %984, 67
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds i64, ptr %982, i64 %986
  %988 = load i64, ptr %987, align 8, !tbaa !11
  %989 = and i64 %981, %988
  %990 = load i64, ptr %5, align 8, !tbaa !11
  %991 = xor i64 %990, %989
  store i64 %991, ptr %5, align 8, !tbaa !11
  %992 = load i64, ptr %5, align 8, !tbaa !11
  %993 = lshr i64 %992, 6
  %994 = load i64, ptr %5, align 8, !tbaa !11
  %995 = xor i64 %994, %993
  store i64 %995, ptr %5, align 8, !tbaa !11
  %996 = load i64, ptr %5, align 8, !tbaa !11
  %997 = load i64, ptr %5, align 8, !tbaa !11
  %998 = shl i64 %997, 31
  %999 = xor i64 %996, %998
  %1000 = load ptr, ptr %3, align 8, !tbaa !5
  %1001 = load i32, ptr %7, align 4, !tbaa !9
  %1002 = add nsw i32 %1001, 14
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds i64, ptr %1000, i64 %1003
  store i64 %999, ptr %1004, align 8, !tbaa !11
  %1005 = load i64, ptr %6, align 8, !tbaa !11
  store i64 %1005, ptr %5, align 8, !tbaa !11
  %1006 = load ptr, ptr %3, align 8, !tbaa !5
  %1007 = load i32, ptr %7, align 4, !tbaa !9
  %1008 = add nsw i32 %1007, 15
  %1009 = sub nsw i32 %1008, 89
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds i64, ptr %1006, i64 %1010
  %1012 = load i64, ptr %1011, align 8, !tbaa !11
  %1013 = load i64, ptr %5, align 8, !tbaa !11
  %1014 = xor i64 %1013, %1012
  store i64 %1014, ptr %5, align 8, !tbaa !11
  %1015 = load ptr, ptr %3, align 8, !tbaa !5
  %1016 = load i32, ptr %7, align 4, !tbaa !9
  %1017 = add nsw i32 %1016, 15
  %1018 = sub nsw i32 %1017, 17
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds i64, ptr %1015, i64 %1019
  %1021 = load i64, ptr %1020, align 8, !tbaa !11
  %1022 = load i64, ptr %5, align 8, !tbaa !11
  %1023 = xor i64 %1022, %1021
  store i64 %1023, ptr %5, align 8, !tbaa !11
  %1024 = load ptr, ptr %3, align 8, !tbaa !5
  %1025 = load i32, ptr %7, align 4, !tbaa !9
  %1026 = add nsw i32 %1025, 15
  %1027 = sub nsw i32 %1026, 18
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds i64, ptr %1024, i64 %1028
  %1030 = load i64, ptr %1029, align 8, !tbaa !11
  %1031 = load ptr, ptr %3, align 8, !tbaa !5
  %1032 = load i32, ptr %7, align 4, !tbaa !9
  %1033 = add nsw i32 %1032, 15
  %1034 = sub nsw i32 %1033, 21
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds i64, ptr %1031, i64 %1035
  %1037 = load i64, ptr %1036, align 8, !tbaa !11
  %1038 = and i64 %1030, %1037
  %1039 = load i64, ptr %5, align 8, !tbaa !11
  %1040 = xor i64 %1039, %1038
  store i64 %1040, ptr %5, align 8, !tbaa !11
  %1041 = load ptr, ptr %3, align 8, !tbaa !5
  %1042 = load i32, ptr %7, align 4, !tbaa !9
  %1043 = add nsw i32 %1042, 15
  %1044 = sub nsw i32 %1043, 31
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds i64, ptr %1041, i64 %1045
  %1047 = load i64, ptr %1046, align 8, !tbaa !11
  %1048 = load ptr, ptr %3, align 8, !tbaa !5
  %1049 = load i32, ptr %7, align 4, !tbaa !9
  %1050 = add nsw i32 %1049, 15
  %1051 = sub nsw i32 %1050, 67
  %1052 = sext i32 %1051 to i64
  %1053 = getelementptr inbounds i64, ptr %1048, i64 %1052
  %1054 = load i64, ptr %1053, align 8, !tbaa !11
  %1055 = and i64 %1047, %1054
  %1056 = load i64, ptr %5, align 8, !tbaa !11
  %1057 = xor i64 %1056, %1055
  store i64 %1057, ptr %5, align 8, !tbaa !11
  %1058 = load i64, ptr %5, align 8, !tbaa !11
  %1059 = lshr i64 %1058, 12
  %1060 = load i64, ptr %5, align 8, !tbaa !11
  %1061 = xor i64 %1060, %1059
  store i64 %1061, ptr %5, align 8, !tbaa !11
  %1062 = load i64, ptr %5, align 8, !tbaa !11
  %1063 = load i64, ptr %5, align 8, !tbaa !11
  %1064 = shl i64 %1063, 9
  %1065 = xor i64 %1062, %1064
  %1066 = load ptr, ptr %3, align 8, !tbaa !5
  %1067 = load i32, ptr %7, align 4, !tbaa !9
  %1068 = add nsw i32 %1067, 15
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds i64, ptr %1066, i64 %1069
  store i64 %1065, ptr %1070, align 8, !tbaa !11
  %1071 = load i64, ptr %6, align 8, !tbaa !11
  %1072 = shl i64 %1071, 1
  %1073 = load i64, ptr %6, align 8, !tbaa !11
  %1074 = lshr i64 %1073, 63
  %1075 = xor i64 %1072, %1074
  %1076 = load i64, ptr %6, align 8, !tbaa !11
  %1077 = and i64 %1076, 8291622248878821280
  %1078 = xor i64 %1075, %1077
  store i64 %1078, ptr %6, align 8, !tbaa !11
  %1079 = load i32, ptr %7, align 4, !tbaa !9
  %1080 = add nsw i32 %1079, 16
  store i32 %1080, ptr %7, align 4, !tbaa !9
  br label %1081

1081:                                             ; preds = %14
  %1082 = load i32, ptr %8, align 4, !tbaa !9
  %1083 = add nsw i32 %1082, 16
  store i32 %1083, ptr %8, align 4, !tbaa !9
  br label %9, !llvm.loop !13

1084:                                             ; preds = %9
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #2
  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

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

!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", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}


; 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: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable
define dso_local void @md6_main_compression_loop(ptr noundef %0, i32 noundef %1) local_unnamed_addr #0 {
  %3 = shl nsw i32 %1, 4
  %4 = icmp sgt i32 %1, 0
  br i1 %4, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %2, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 89, %2 ]
  %.0378 = phi i32 [ %154, %.lr.ph ], [ 0, %2 ]
  %.0375376 = phi i64 [ %153, %.lr.ph ], [ 81985529216486895, %2 ]
  %5 = getelementptr i64, ptr %0, i64 %indvars.iv
  %6 = getelementptr i8, ptr %5, i64 -712
  %7 = getelementptr i8, ptr %5, i64 -144
  %8 = getelementptr i8, ptr %5, i64 -248
  %9 = getelementptr i8, ptr %5, i64 -536
  %10 = getelementptr i8, ptr %5, i64 -152
  %11 = load i64, ptr %10, align 8, !tbaa !5
  %12 = getelementptr i8, ptr %5, i64 -112
  %13 = load <4 x i64>, ptr %7, align 8, !tbaa !5
  %14 = load <4 x i64>, ptr %6, align 8, !tbaa !5
  %15 = load <4 x i64>, ptr %8, align 8, !tbaa !5
  %16 = load <4 x i64>, ptr %9, align 8, !tbaa !5
  %17 = and <4 x i64> %16, %15
  %18 = insertelement <4 x i64> poison, i64 %.0375376, i64 0
  %19 = shufflevector <4 x i64> %18, <4 x i64> poison, <4 x i32> zeroinitializer
  %20 = shufflevector <4 x i64> %13, <4 x i64> poison, <4 x i32> <i32 1, i32 2, i32 3, i32 poison>
  %21 = getelementptr i8, ptr %5, i64 -680
  %22 = extractelement <4 x i64> %13, i64 1
  %23 = getelementptr i8, ptr %5, i64 -216
  %24 = getelementptr i8, ptr %5, i64 -504
  %25 = getelementptr inbounds i8, ptr %5, i64 32
  %26 = extractelement <4 x i64> %13, i64 2
  %27 = getelementptr i8, ptr %5, i64 -80
  %28 = load <4 x i64>, ptr %12, align 8, !tbaa !5
  %29 = shufflevector <4 x i64> %20, <4 x i64> %28, <4 x i32> <i32 0, i32 1, i32 2, i32 4>
  %30 = load <4 x i64>, ptr %21, align 8, !tbaa !5
  %31 = and <4 x i64> %28, %29
  %32 = load <4 x i64>, ptr %23, align 8, !tbaa !5
  %33 = load <4 x i64>, ptr %24, align 8, !tbaa !5
  %34 = and <4 x i64> %33, %32
  %35 = xor <4 x i64> %31, %30
  %36 = xor <4 x i64> %35, %34
  %37 = xor <4 x i64> %36, %19
  %38 = shufflevector <4 x i64> %28, <4 x i64> poison, <4 x i32> <i32 1, i32 2, i32 3, i32 poison>
  %39 = getelementptr i8, ptr %5, i64 -648
  %40 = getelementptr i8, ptr %5, i64 -184
  %41 = getelementptr i8, ptr %5, i64 -472
  %42 = getelementptr inbounds i8, ptr %5, i64 64
  %43 = getelementptr i8, ptr %5, i64 -48
  %44 = load i64, ptr %43, align 8, !tbaa !5
  %45 = load <4 x i64>, ptr %40, align 8, !tbaa !5
  %46 = shufflevector <4 x i64> %45, <4 x i64> poison, <4 x i32> <i32 2, i32 3, i32 poison, i32 poison>
  %47 = insertelement <4 x i64> %46, i64 %11, i64 2
  %48 = shufflevector <4 x i64> %47, <4 x i64> %13, <4 x i32> <i32 0, i32 1, i32 2, i32 4>
  %49 = and <4 x i64> %13, %48
  %50 = xor <4 x i64> %49, %14
  %51 = xor <4 x i64> %50, %17
  %52 = xor <4 x i64> %51, %19
  %53 = xor <4 x i64> %52, %29
  %54 = lshr <4 x i64> %53, <i64 10, i64 5, i64 13, i64 10>
  %55 = xor <4 x i64> %54, %53
  %56 = shl <4 x i64> %55, <i64 11, i64 24, i64 9, i64 16>
  %57 = xor <4 x i64> %56, %55
  store <4 x i64> %57, ptr %5, align 8, !tbaa !5
  %58 = load <4 x i64>, ptr %27, align 8, !tbaa !5
  %59 = shufflevector <4 x i64> %38, <4 x i64> %58, <4 x i32> <i32 0, i32 1, i32 2, i32 4>
  %60 = xor <4 x i64> %37, %59
  %61 = lshr <4 x i64> %60, <i64 11, i64 12, i64 2, i64 7>
  %62 = xor <4 x i64> %61, %60
  %63 = shl <4 x i64> %62, <i64 15, i64 9, i64 27, i64 15>
  %64 = xor <4 x i64> %63, %62
  store <4 x i64> %64, ptr %25, align 8, !tbaa !5
  %65 = load <4 x i64>, ptr %39, align 8, !tbaa !5
  %66 = and <4 x i64> %58, %59
  %67 = load <4 x i64>, ptr %41, align 8, !tbaa !5
  %68 = and <4 x i64> %67, %45
  %69 = xor <4 x i64> %66, %65
  %70 = xor <4 x i64> %69, %68
  %71 = shufflevector <4 x i64> %58, <4 x i64> poison, <4 x i32> <i32 1, i32 2, i32 3, i32 poison>
  %72 = insertelement <4 x i64> %71, i64 %44, i64 3
  %73 = xor <4 x i64> %70, %72
  %74 = xor <4 x i64> %73, %19
  %75 = lshr <4 x i64> %74, <i64 14, i64 15, i64 7, i64 13>
  %76 = xor <4 x i64> %75, %74
  %77 = shl <4 x i64> %76, <i64 6, i64 2, i64 29, i64 8>
  %78 = xor <4 x i64> %77, %76
  store <4 x i64> %78, ptr %42, align 8, !tbaa !5
  %79 = getelementptr i8, ptr %5, i64 -616
  %80 = load i64, ptr %79, align 8, !tbaa !5
  %81 = getelementptr i8, ptr %5, i64 -40
  %82 = load i64, ptr %81, align 8, !tbaa !5
  %83 = extractelement <4 x i64> %58, i64 1
  %84 = and i64 %44, %83
  %85 = getelementptr i8, ptr %5, i64 -440
  %86 = load i64, ptr %85, align 8, !tbaa !5
  %87 = and i64 %86, %11
  %88 = xor i64 %84, %80
  %89 = xor i64 %88, %87
  %90 = xor i64 %89, %.0375376
  %91 = xor i64 %90, %82
  %92 = lshr i64 %91, 11
  %93 = xor i64 %92, %91
  %94 = shl i64 %93, 15
  %95 = xor i64 %94, %93
  %96 = getelementptr inbounds i8, ptr %5, i64 96
  store i64 %95, ptr %96, align 8, !tbaa !5
  %97 = getelementptr i8, ptr %5, i64 -608
  %98 = load i64, ptr %97, align 8, !tbaa !5
  %99 = getelementptr i8, ptr %5, i64 -32
  %100 = load i64, ptr %99, align 8, !tbaa !5
  %101 = extractelement <4 x i64> %58, i64 2
  %102 = and i64 %82, %101
  %103 = getelementptr i8, ptr %5, i64 -432
  %104 = load i64, ptr %103, align 8, !tbaa !5
  %105 = extractelement <4 x i64> %13, i64 0
  %106 = and i64 %104, %105
  %107 = xor i64 %102, %98
  %108 = xor i64 %107, %106
  %109 = xor i64 %108, %.0375376
  %110 = xor i64 %109, %100
  %111 = lshr i64 %110, 7
  %112 = xor i64 %111, %110
  %113 = shl i64 %112, 5
  %114 = xor i64 %113, %112
  %115 = getelementptr inbounds i8, ptr %5, i64 104
  store i64 %114, ptr %115, align 8, !tbaa !5
  %116 = getelementptr i8, ptr %5, i64 -600
  %117 = load i64, ptr %116, align 8, !tbaa !5
  %118 = getelementptr i8, ptr %5, i64 -24
  %119 = load i64, ptr %118, align 8, !tbaa !5
  %120 = extractelement <4 x i64> %58, i64 3
  %121 = and i64 %100, %120
  %122 = getelementptr i8, ptr %5, i64 -424
  %123 = load i64, ptr %122, align 8, !tbaa !5
  %124 = and i64 %123, %22
  %125 = xor i64 %121, %117
  %126 = xor i64 %125, %124
  %127 = xor i64 %126, %.0375376
  %128 = xor i64 %127, %119
  %129 = lshr i64 %128, 6
  %130 = xor i64 %129, %128
  %131 = shl i64 %130, 31
  %132 = xor i64 %131, %130
  %133 = getelementptr inbounds i8, ptr %5, i64 112
  store i64 %132, ptr %133, align 8, !tbaa !5
  %134 = getelementptr i8, ptr %5, i64 -592
  %135 = load i64, ptr %134, align 8, !tbaa !5
  %136 = getelementptr i8, ptr %5, i64 -16
  %137 = load i64, ptr %136, align 8, !tbaa !5
  %138 = and i64 %119, %44
  %139 = getelementptr i8, ptr %5, i64 -416
  %140 = load i64, ptr %139, align 8, !tbaa !5
  %141 = and i64 %140, %26
  %142 = xor i64 %138, %135
  %143 = xor i64 %142, %137
  %144 = xor i64 %143, %141
  %145 = xor i64 %144, %.0375376
  %146 = lshr i64 %145, 12
  %147 = xor i64 %146, %145
  %148 = shl i64 %147, 9
  %149 = xor i64 %148, %147
  %150 = getelementptr inbounds i8, ptr %5, i64 120
  store i64 %149, ptr %150, align 8, !tbaa !5
  %151 = tail call i64 @llvm.fshl.i64(i64 %.0375376, i64 %.0375376, i64 1)
  %152 = and i64 %.0375376, 8291622248878821280
  %153 = xor i64 %151, %152
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 16
  %154 = add nuw nsw i32 %.0378, 16
  %155 = icmp slt i32 %154, %3
  br i1 %155, label %.lr.ph, label %._crit_edge, !llvm.loop !9

._crit_edge:                                      ; preds = %.lr.ph, %2
  ret void
}

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

attributes #0 = { nofree norecurse nosync nounwind memory(argmem: readwrite) 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 speculatable willreturn memory(none) }

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

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


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass