; LLVM IR from microsoft/vOW4SIKE_on_HW :: SIKE_sw/src/sha3 (fips202)

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

@KeccakF_RoundConstants = external hidden constant [24 x i64], align 16

; Function Attrs: nounwind uwtable
define dso_local void @KeccakF1600_StatePermute(ptr noundef %0) #0 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i64, align 8
  %5 = alloca i64, align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #2
  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 8, ptr %7) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #2
  %64 = load ptr, ptr %2, align 8, !tbaa !5
  %65 = getelementptr inbounds i64, ptr %64, i64 0
  %66 = load i64, ptr %65, align 8, !tbaa !9
  store i64 %66, ptr %4, align 8, !tbaa !9
  %67 = load ptr, ptr %2, align 8, !tbaa !5
  %68 = getelementptr inbounds i64, ptr %67, i64 1
  %69 = load i64, ptr %68, align 8, !tbaa !9
  store i64 %69, ptr %5, align 8, !tbaa !9
  %70 = load ptr, ptr %2, align 8, !tbaa !5
  %71 = getelementptr inbounds i64, ptr %70, i64 2
  %72 = load i64, ptr %71, align 8, !tbaa !9
  store i64 %72, ptr %6, align 8, !tbaa !9
  %73 = load ptr, ptr %2, align 8, !tbaa !5
  %74 = getelementptr inbounds i64, ptr %73, i64 3
  %75 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %75, ptr %7, align 8, !tbaa !9
  %76 = load ptr, ptr %2, align 8, !tbaa !5
  %77 = getelementptr inbounds i64, ptr %76, i64 4
  %78 = load i64, ptr %77, align 8, !tbaa !9
  store i64 %78, ptr %8, align 8, !tbaa !9
  %79 = load ptr, ptr %2, align 8, !tbaa !5
  %80 = getelementptr inbounds i64, ptr %79, i64 5
  %81 = load i64, ptr %80, align 8, !tbaa !9
  store i64 %81, ptr %9, align 8, !tbaa !9
  %82 = load ptr, ptr %2, align 8, !tbaa !5
  %83 = getelementptr inbounds i64, ptr %82, i64 6
  %84 = load i64, ptr %83, align 8, !tbaa !9
  store i64 %84, ptr %10, align 8, !tbaa !9
  %85 = load ptr, ptr %2, align 8, !tbaa !5
  %86 = getelementptr inbounds i64, ptr %85, i64 7
  %87 = load i64, ptr %86, align 8, !tbaa !9
  store i64 %87, ptr %11, align 8, !tbaa !9
  %88 = load ptr, ptr %2, align 8, !tbaa !5
  %89 = getelementptr inbounds i64, ptr %88, i64 8
  %90 = load i64, ptr %89, align 8, !tbaa !9
  store i64 %90, ptr %12, align 8, !tbaa !9
  %91 = load ptr, ptr %2, align 8, !tbaa !5
  %92 = getelementptr inbounds i64, ptr %91, i64 9
  %93 = load i64, ptr %92, align 8, !tbaa !9
  store i64 %93, ptr %13, align 8, !tbaa !9
  %94 = load ptr, ptr %2, align 8, !tbaa !5
  %95 = getelementptr inbounds i64, ptr %94, i64 10
  %96 = load i64, ptr %95, align 8, !tbaa !9
  store i64 %96, ptr %14, align 8, !tbaa !9
  %97 = load ptr, ptr %2, align 8, !tbaa !5
  %98 = getelementptr inbounds i64, ptr %97, i64 11
  %99 = load i64, ptr %98, align 8, !tbaa !9
  store i64 %99, ptr %15, align 8, !tbaa !9
  %100 = load ptr, ptr %2, align 8, !tbaa !5
  %101 = getelementptr inbounds i64, ptr %100, i64 12
  %102 = load i64, ptr %101, align 8, !tbaa !9
  store i64 %102, ptr %16, align 8, !tbaa !9
  %103 = load ptr, ptr %2, align 8, !tbaa !5
  %104 = getelementptr inbounds i64, ptr %103, i64 13
  %105 = load i64, ptr %104, align 8, !tbaa !9
  store i64 %105, ptr %17, align 8, !tbaa !9
  %106 = load ptr, ptr %2, align 8, !tbaa !5
  %107 = getelementptr inbounds i64, ptr %106, i64 14
  %108 = load i64, ptr %107, align 8, !tbaa !9
  store i64 %108, ptr %18, align 8, !tbaa !9
  %109 = load ptr, ptr %2, align 8, !tbaa !5
  %110 = getelementptr inbounds i64, ptr %109, i64 15
  %111 = load i64, ptr %110, align 8, !tbaa !9
  store i64 %111, ptr %19, align 8, !tbaa !9
  %112 = load ptr, ptr %2, align 8, !tbaa !5
  %113 = getelementptr inbounds i64, ptr %112, i64 16
  %114 = load i64, ptr %113, align 8, !tbaa !9
  store i64 %114, ptr %20, align 8, !tbaa !9
  %115 = load ptr, ptr %2, align 8, !tbaa !5
  %116 = getelementptr inbounds i64, ptr %115, i64 17
  %117 = load i64, ptr %116, align 8, !tbaa !9
  store i64 %117, ptr %21, align 8, !tbaa !9
  %118 = load ptr, ptr %2, align 8, !tbaa !5
  %119 = getelementptr inbounds i64, ptr %118, i64 18
  %120 = load i64, ptr %119, align 8, !tbaa !9
  store i64 %120, ptr %22, align 8, !tbaa !9
  %121 = load ptr, ptr %2, align 8, !tbaa !5
  %122 = getelementptr inbounds i64, ptr %121, i64 19
  %123 = load i64, ptr %122, align 8, !tbaa !9
  store i64 %123, ptr %23, align 8, !tbaa !9
  %124 = load ptr, ptr %2, align 8, !tbaa !5
  %125 = getelementptr inbounds i64, ptr %124, i64 20
  %126 = load i64, ptr %125, align 8, !tbaa !9
  store i64 %126, ptr %24, align 8, !tbaa !9
  %127 = load ptr, ptr %2, align 8, !tbaa !5
  %128 = getelementptr inbounds i64, ptr %127, i64 21
  %129 = load i64, ptr %128, align 8, !tbaa !9
  store i64 %129, ptr %25, align 8, !tbaa !9
  %130 = load ptr, ptr %2, align 8, !tbaa !5
  %131 = getelementptr inbounds i64, ptr %130, i64 22
  %132 = load i64, ptr %131, align 8, !tbaa !9
  store i64 %132, ptr %26, align 8, !tbaa !9
  %133 = load ptr, ptr %2, align 8, !tbaa !5
  %134 = getelementptr inbounds i64, ptr %133, i64 23
  %135 = load i64, ptr %134, align 8, !tbaa !9
  store i64 %135, ptr %27, align 8, !tbaa !9
  %136 = load ptr, ptr %2, align 8, !tbaa !5
  %137 = getelementptr inbounds i64, ptr %136, i64 24
  %138 = load i64, ptr %137, align 8, !tbaa !9
  store i64 %138, ptr %28, align 8, !tbaa !9
  store i32 0, ptr %3, align 4, !tbaa !11
  br label %139

139:                                              ; preds = %1008, %1
  %140 = load i32, ptr %3, align 4, !tbaa !11
  %141 = icmp slt i32 %140, 24
  br i1 %141, label %142, label %1011

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

1008:                                             ; preds = %142
  %1009 = load i32, ptr %3, align 4, !tbaa !11
  %1010 = add nsw i32 %1009, 2
  store i32 %1010, ptr %3, align 4, !tbaa !11
  br label %139, !llvm.loop !13

1011:                                             ; preds = %139
  %1012 = load i64, ptr %4, align 8, !tbaa !9
  %1013 = load ptr, ptr %2, align 8, !tbaa !5
  %1014 = getelementptr inbounds i64, ptr %1013, i64 0
  store i64 %1012, ptr %1014, align 8, !tbaa !9
  %1015 = load i64, ptr %5, align 8, !tbaa !9
  %1016 = load ptr, ptr %2, align 8, !tbaa !5
  %1017 = getelementptr inbounds i64, ptr %1016, i64 1
  store i64 %1015, ptr %1017, align 8, !tbaa !9
  %1018 = load i64, ptr %6, align 8, !tbaa !9
  %1019 = load ptr, ptr %2, align 8, !tbaa !5
  %1020 = getelementptr inbounds i64, ptr %1019, i64 2
  store i64 %1018, ptr %1020, align 8, !tbaa !9
  %1021 = load i64, ptr %7, align 8, !tbaa !9
  %1022 = load ptr, ptr %2, align 8, !tbaa !5
  %1023 = getelementptr inbounds i64, ptr %1022, i64 3
  store i64 %1021, ptr %1023, align 8, !tbaa !9
  %1024 = load i64, ptr %8, align 8, !tbaa !9
  %1025 = load ptr, ptr %2, align 8, !tbaa !5
  %1026 = getelementptr inbounds i64, ptr %1025, i64 4
  store i64 %1024, ptr %1026, align 8, !tbaa !9
  %1027 = load i64, ptr %9, align 8, !tbaa !9
  %1028 = load ptr, ptr %2, align 8, !tbaa !5
  %1029 = getelementptr inbounds i64, ptr %1028, i64 5
  store i64 %1027, ptr %1029, align 8, !tbaa !9
  %1030 = load i64, ptr %10, align 8, !tbaa !9
  %1031 = load ptr, ptr %2, align 8, !tbaa !5
  %1032 = getelementptr inbounds i64, ptr %1031, i64 6
  store i64 %1030, ptr %1032, align 8, !tbaa !9
  %1033 = load i64, ptr %11, align 8, !tbaa !9
  %1034 = load ptr, ptr %2, align 8, !tbaa !5
  %1035 = getelementptr inbounds i64, ptr %1034, i64 7
  store i64 %1033, ptr %1035, align 8, !tbaa !9
  %1036 = load i64, ptr %12, align 8, !tbaa !9
  %1037 = load ptr, ptr %2, align 8, !tbaa !5
  %1038 = getelementptr inbounds i64, ptr %1037, i64 8
  store i64 %1036, ptr %1038, align 8, !tbaa !9
  %1039 = load i64, ptr %13, align 8, !tbaa !9
  %1040 = load ptr, ptr %2, align 8, !tbaa !5
  %1041 = getelementptr inbounds i64, ptr %1040, i64 9
  store i64 %1039, ptr %1041, align 8, !tbaa !9
  %1042 = load i64, ptr %14, align 8, !tbaa !9
  %1043 = load ptr, ptr %2, align 8, !tbaa !5
  %1044 = getelementptr inbounds i64, ptr %1043, i64 10
  store i64 %1042, ptr %1044, align 8, !tbaa !9
  %1045 = load i64, ptr %15, align 8, !tbaa !9
  %1046 = load ptr, ptr %2, align 8, !tbaa !5
  %1047 = getelementptr inbounds i64, ptr %1046, i64 11
  store i64 %1045, ptr %1047, align 8, !tbaa !9
  %1048 = load i64, ptr %16, align 8, !tbaa !9
  %1049 = load ptr, ptr %2, align 8, !tbaa !5
  %1050 = getelementptr inbounds i64, ptr %1049, i64 12
  store i64 %1048, ptr %1050, align 8, !tbaa !9
  %1051 = load i64, ptr %17, align 8, !tbaa !9
  %1052 = load ptr, ptr %2, align 8, !tbaa !5
  %1053 = getelementptr inbounds i64, ptr %1052, i64 13
  store i64 %1051, ptr %1053, align 8, !tbaa !9
  %1054 = load i64, ptr %18, align 8, !tbaa !9
  %1055 = load ptr, ptr %2, align 8, !tbaa !5
  %1056 = getelementptr inbounds i64, ptr %1055, i64 14
  store i64 %1054, ptr %1056, align 8, !tbaa !9
  %1057 = load i64, ptr %19, align 8, !tbaa !9
  %1058 = load ptr, ptr %2, align 8, !tbaa !5
  %1059 = getelementptr inbounds i64, ptr %1058, i64 15
  store i64 %1057, ptr %1059, align 8, !tbaa !9
  %1060 = load i64, ptr %20, align 8, !tbaa !9
  %1061 = load ptr, ptr %2, align 8, !tbaa !5
  %1062 = getelementptr inbounds i64, ptr %1061, i64 16
  store i64 %1060, ptr %1062, align 8, !tbaa !9
  %1063 = load i64, ptr %21, align 8, !tbaa !9
  %1064 = load ptr, ptr %2, align 8, !tbaa !5
  %1065 = getelementptr inbounds i64, ptr %1064, i64 17
  store i64 %1063, ptr %1065, align 8, !tbaa !9
  %1066 = load i64, ptr %22, align 8, !tbaa !9
  %1067 = load ptr, ptr %2, align 8, !tbaa !5
  %1068 = getelementptr inbounds i64, ptr %1067, i64 18
  store i64 %1066, ptr %1068, align 8, !tbaa !9
  %1069 = load i64, ptr %23, align 8, !tbaa !9
  %1070 = load ptr, ptr %2, align 8, !tbaa !5
  %1071 = getelementptr inbounds i64, ptr %1070, i64 19
  store i64 %1069, ptr %1071, align 8, !tbaa !9
  %1072 = load i64, ptr %24, align 8, !tbaa !9
  %1073 = load ptr, ptr %2, align 8, !tbaa !5
  %1074 = getelementptr inbounds i64, ptr %1073, i64 20
  store i64 %1072, ptr %1074, align 8, !tbaa !9
  %1075 = load i64, ptr %25, align 8, !tbaa !9
  %1076 = load ptr, ptr %2, align 8, !tbaa !5
  %1077 = getelementptr inbounds i64, ptr %1076, i64 21
  store i64 %1075, ptr %1077, align 8, !tbaa !9
  %1078 = load i64, ptr %26, align 8, !tbaa !9
  %1079 = load ptr, ptr %2, align 8, !tbaa !5
  %1080 = getelementptr inbounds i64, ptr %1079, i64 22
  store i64 %1078, ptr %1080, align 8, !tbaa !9
  %1081 = load i64, ptr %27, align 8, !tbaa !9
  %1082 = load ptr, ptr %2, align 8, !tbaa !5
  %1083 = getelementptr inbounds i64, ptr %1082, i64 23
  store i64 %1081, ptr %1083, align 8, !tbaa !9
  %1084 = load i64, ptr %28, align 8, !tbaa !9
  %1085 = load ptr, ptr %2, align 8, !tbaa !5
  %1086 = getelementptr inbounds i64, ptr %1085, i64 24
  store i64 %1084, ptr %1086, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #2
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !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"

@KeccakF_RoundConstants = external hidden local_unnamed_addr constant [24 x i64], align 16

; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable
define dso_local void @KeccakF1600_StatePermute(ptr nocapture noundef %0) local_unnamed_addr #0 {
  %2 = load i64, ptr %0, align 8, !tbaa !5
  %3 = getelementptr inbounds i8, ptr %0, i64 8
  %4 = load i64, ptr %3, align 8, !tbaa !5
  %5 = getelementptr inbounds i8, ptr %0, i64 16
  %6 = load i64, ptr %5, align 8, !tbaa !5
  %7 = getelementptr inbounds i8, ptr %0, i64 24
  %8 = load i64, ptr %7, align 8, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %0, i64 32
  %10 = load i64, ptr %9, align 8, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %0, i64 40
  %12 = load i64, ptr %11, align 8, !tbaa !5
  %13 = getelementptr inbounds i8, ptr %0, i64 48
  %14 = load i64, ptr %13, align 8, !tbaa !5
  %15 = getelementptr inbounds i8, ptr %0, i64 56
  %16 = load i64, ptr %15, align 8, !tbaa !5
  %17 = getelementptr inbounds i8, ptr %0, i64 64
  %18 = load i64, ptr %17, align 8, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %0, i64 72
  %20 = load i64, ptr %19, align 8, !tbaa !5
  %21 = getelementptr inbounds i8, ptr %0, i64 80
  %22 = load i64, ptr %21, align 8, !tbaa !5
  %23 = getelementptr inbounds i8, ptr %0, i64 88
  %24 = load i64, ptr %23, align 8, !tbaa !5
  %25 = getelementptr inbounds i8, ptr %0, i64 96
  %26 = load i64, ptr %25, align 8, !tbaa !5
  %27 = getelementptr inbounds i8, ptr %0, i64 104
  %28 = load i64, ptr %27, align 8, !tbaa !5
  %29 = getelementptr inbounds i8, ptr %0, i64 112
  %30 = load i64, ptr %29, align 8, !tbaa !5
  %31 = getelementptr inbounds i8, ptr %0, i64 120
  %32 = load i64, ptr %31, align 8, !tbaa !5
  %33 = getelementptr inbounds i8, ptr %0, i64 128
  %34 = load i64, ptr %33, align 8, !tbaa !5
  %35 = getelementptr inbounds i8, ptr %0, i64 136
  %36 = load i64, ptr %35, align 8, !tbaa !5
  %37 = getelementptr inbounds i8, ptr %0, i64 144
  %38 = load i64, ptr %37, align 8, !tbaa !5
  %39 = getelementptr inbounds i8, ptr %0, i64 152
  %40 = load i64, ptr %39, align 8, !tbaa !5
  %41 = getelementptr inbounds i8, ptr %0, i64 160
  %42 = load i64, ptr %41, align 8, !tbaa !5
  %43 = getelementptr inbounds i8, ptr %0, i64 168
  %44 = load i64, ptr %43, align 8, !tbaa !5
  %45 = getelementptr inbounds i8, ptr %0, i64 176
  %46 = load i64, ptr %45, align 8, !tbaa !5
  %47 = getelementptr inbounds i8, ptr %0, i64 184
  %48 = load i64, ptr %47, align 8, !tbaa !5
  %49 = getelementptr inbounds i8, ptr %0, i64 192
  %50 = load i64, ptr %49, align 8, !tbaa !5
  br label %51

51:                                               ; preds = %1, %51
  %indvars.iv = phi i64 [ 0, %1 ], [ %indvars.iv.next, %51 ]
  %.0508557 = phi i64 [ %2, %1 ], [ %254, %51 ]
  %.0509556 = phi i64 [ %4, %1 ], [ %257, %51 ]
  %.0510555 = phi i64 [ %6, %1 ], [ %260, %51 ]
  %.0511554 = phi i64 [ %8, %1 ], [ %263, %51 ]
  %.0512553 = phi i64 [ %10, %1 ], [ %266, %51 ]
  %.0513552 = phi i64 [ %12, %1 ], [ %279, %51 ]
  %.0514551 = phi i64 [ %14, %1 ], [ %282, %51 ]
  %.0515550 = phi i64 [ %16, %1 ], [ %285, %51 ]
  %.0516549 = phi i64 [ %18, %1 ], [ %288, %51 ]
  %.0517548 = phi i64 [ %20, %1 ], [ %291, %51 ]
  %.0518547 = phi i64 [ %22, %1 ], [ %304, %51 ]
  %.0519546 = phi i64 [ %24, %1 ], [ %307, %51 ]
  %.0520545 = phi i64 [ %26, %1 ], [ %310, %51 ]
  %.0521544 = phi i64 [ %28, %1 ], [ %313, %51 ]
  %.0522543 = phi i64 [ %30, %1 ], [ %316, %51 ]
  %.0523542 = phi i64 [ %32, %1 ], [ %329, %51 ]
  %.0524541 = phi i64 [ %34, %1 ], [ %332, %51 ]
  %.0525540 = phi i64 [ %36, %1 ], [ %335, %51 ]
  %.0526539 = phi i64 [ %38, %1 ], [ %338, %51 ]
  %.0527538 = phi i64 [ %40, %1 ], [ %341, %51 ]
  %.0528537 = phi i64 [ %42, %1 ], [ %354, %51 ]
  %.0529536 = phi i64 [ %44, %1 ], [ %357, %51 ]
  %.0530535 = phi i64 [ %46, %1 ], [ %360, %51 ]
  %.0531534 = phi i64 [ %48, %1 ], [ %363, %51 ]
  %.0532533 = phi i64 [ %50, %1 ], [ %366, %51 ]
  %52 = xor i64 %.0523542, %.0528537
  %53 = xor i64 %52, %.0518547
  %54 = xor i64 %53, %.0513552
  %55 = xor i64 %54, %.0508557
  %56 = xor i64 %.0524541, %.0529536
  %57 = xor i64 %56, %.0519546
  %58 = xor i64 %57, %.0514551
  %59 = xor i64 %58, %.0509556
  %60 = xor i64 %.0525540, %.0530535
  %61 = xor i64 %60, %.0520545
  %62 = xor i64 %61, %.0515550
  %63 = xor i64 %62, %.0510555
  %64 = xor i64 %.0526539, %.0531534
  %65 = xor i64 %64, %.0521544
  %66 = xor i64 %65, %.0516549
  %67 = xor i64 %66, %.0511554
  %68 = xor i64 %.0527538, %.0532533
  %69 = xor i64 %68, %.0522543
  %70 = xor i64 %69, %.0517548
  %71 = xor i64 %70, %.0512553
  %72 = tail call i64 @llvm.fshl.i64(i64 %59, i64 %59, i64 1)
  %73 = xor i64 %72, %71
  %74 = tail call i64 @llvm.fshl.i64(i64 %63, i64 %63, i64 1)
  %75 = xor i64 %55, %74
  %76 = tail call i64 @llvm.fshl.i64(i64 %67, i64 %67, i64 1)
  %77 = xor i64 %59, %76
  %78 = tail call i64 @llvm.fshl.i64(i64 %71, i64 %71, i64 1)
  %79 = xor i64 %63, %78
  %80 = tail call i64 @llvm.fshl.i64(i64 %55, i64 %55, i64 1)
  %81 = xor i64 %80, %67
  %82 = xor i64 %73, %.0508557
  %83 = xor i64 %75, %.0514551
  %84 = tail call i64 @llvm.fshl.i64(i64 %83, i64 %83, i64 44)
  %85 = xor i64 %77, %.0520545
  %86 = tail call i64 @llvm.fshl.i64(i64 %85, i64 %85, i64 43)
  %87 = xor i64 %79, %.0526539
  %88 = tail call i64 @llvm.fshl.i64(i64 %87, i64 %87, i64 21)
  %89 = xor i64 %81, %.0532533
  %90 = tail call i64 @llvm.fshl.i64(i64 %89, i64 %89, i64 14)
  %91 = xor i64 %84, -1
  %92 = and i64 %86, %91
  %93 = getelementptr inbounds [24 x i64], ptr @KeccakF_RoundConstants, i64 0, i64 %indvars.iv
  %94 = load i64, ptr %93, align 16, !tbaa !5
  %95 = xor i64 %92, %94
  %96 = xor i64 %95, %82
  %97 = xor i64 %86, -1
  %98 = and i64 %88, %97
  %99 = xor i64 %84, %98
  %100 = xor i64 %88, -1
  %101 = and i64 %90, %100
  %102 = xor i64 %101, %86
  %103 = xor i64 %90, -1
  %104 = and i64 %82, %103
  %105 = xor i64 %104, %88
  %106 = xor i64 %82, -1
  %107 = and i64 %84, %106
  %108 = xor i64 %90, %107
  %109 = xor i64 %79, %.0511554
  %110 = tail call i64 @llvm.fshl.i64(i64 %109, i64 %109, i64 28)
  %111 = xor i64 %81, %.0517548
  %112 = tail call i64 @llvm.fshl.i64(i64 %111, i64 %111, i64 20)
  %113 = xor i64 %73, %.0518547
  %114 = tail call i64 @llvm.fshl.i64(i64 %113, i64 %113, i64 3)
  %115 = xor i64 %75, %.0524541
  %116 = tail call i64 @llvm.fshl.i64(i64 %115, i64 %115, i64 45)
  %117 = xor i64 %77, %.0530535
  %118 = tail call i64 @llvm.fshl.i64(i64 %117, i64 %117, i64 61)
  %119 = xor i64 %112, -1
  %120 = and i64 %114, %119
  %121 = xor i64 %120, %110
  %122 = xor i64 %114, -1
  %123 = and i64 %116, %122
  %124 = xor i64 %112, %123
  %125 = xor i64 %116, -1
  %126 = and i64 %118, %125
  %127 = xor i64 %126, %114
  %128 = xor i64 %118, -1
  %129 = and i64 %110, %128
  %130 = xor i64 %116, %129
  %131 = xor i64 %110, -1
  %132 = and i64 %112, %131
  %133 = xor i64 %132, %118
  %134 = xor i64 %75, %.0509556
  %135 = tail call i64 @llvm.fshl.i64(i64 %134, i64 %134, i64 1)
  %136 = xor i64 %77, %.0515550
  %137 = tail call i64 @llvm.fshl.i64(i64 %136, i64 %136, i64 6)
  %138 = xor i64 %79, %.0521544
  %139 = tail call i64 @llvm.fshl.i64(i64 %138, i64 %138, i64 25)
  %140 = xor i64 %81, %.0527538
  %141 = tail call i64 @llvm.fshl.i64(i64 %140, i64 %140, i64 8)
  %142 = xor i64 %73, %.0528537
  %143 = tail call i64 @llvm.fshl.i64(i64 %142, i64 %142, i64 18)
  %144 = xor i64 %137, -1
  %145 = and i64 %139, %144
  %146 = xor i64 %135, %145
  %147 = xor i64 %139, -1
  %148 = and i64 %141, %147
  %149 = xor i64 %148, %137
  %150 = xor i64 %141, -1
  %151 = and i64 %143, %150
  %152 = xor i64 %151, %139
  %153 = xor i64 %143, -1
  %154 = and i64 %135, %153
  %155 = xor i64 %141, %154
  %156 = xor i64 %135, -1
  %157 = and i64 %137, %156
  %158 = xor i64 %157, %143
  %159 = xor i64 %81, %.0512553
  %160 = tail call i64 @llvm.fshl.i64(i64 %159, i64 %159, i64 27)
  %161 = xor i64 %73, %.0513552
  %162 = tail call i64 @llvm.fshl.i64(i64 %161, i64 %161, i64 36)
  %163 = xor i64 %75, %.0519546
  %164 = tail call i64 @llvm.fshl.i64(i64 %163, i64 %163, i64 10)
  %165 = xor i64 %77, %.0525540
  %166 = tail call i64 @llvm.fshl.i64(i64 %165, i64 %165, i64 15)
  %167 = xor i64 %79, %.0531534
  %168 = tail call i64 @llvm.fshl.i64(i64 %167, i64 %167, i64 56)
  %169 = xor i64 %162, -1
  %170 = and i64 %164, %169
  %171 = xor i64 %160, %170
  %172 = xor i64 %164, -1
  %173 = and i64 %166, %172
  %174 = xor i64 %173, %162
  %175 = xor i64 %166, -1
  %176 = and i64 %168, %175
  %177 = xor i64 %164, %176
  %178 = xor i64 %168, -1
  %179 = and i64 %160, %178
  %180 = xor i64 %179, %166
  %181 = xor i64 %160, -1
  %182 = and i64 %162, %181
  %183 = xor i64 %182, %168
  %184 = xor i64 %77, %.0510555
  %185 = tail call i64 @llvm.fshl.i64(i64 %184, i64 %184, i64 62)
  %186 = xor i64 %79, %.0516549
  %187 = tail call i64 @llvm.fshl.i64(i64 %186, i64 %186, i64 55)
  %188 = xor i64 %81, %.0522543
  %189 = tail call i64 @llvm.fshl.i64(i64 %188, i64 %188, i64 39)
  %190 = xor i64 %73, %.0523542
  %191 = tail call i64 @llvm.fshl.i64(i64 %190, i64 %190, i64 41)
  %192 = xor i64 %75, %.0529536
  %193 = tail call i64 @llvm.fshl.i64(i64 %192, i64 %192, i64 2)
  %194 = xor i64 %187, -1
  %195 = and i64 %189, %194
  %196 = xor i64 %195, %185
  %197 = xor i64 %189, -1
  %198 = and i64 %191, %197
  %199 = xor i64 %198, %187
  %200 = xor i64 %191, -1
  %201 = and i64 %193, %200
  %202 = xor i64 %189, %201
  %203 = xor i64 %193, -1
  %204 = and i64 %185, %203
  %205 = xor i64 %204, %191
  %206 = xor i64 %185, -1
  %207 = and i64 %187, %206
  %208 = xor i64 %193, %207
  %209 = xor i64 %171, %146
  %210 = xor i64 %209, %121
  %211 = xor i64 %210, %196
  %212 = xor i64 %211, %96
  %213 = xor i64 %124, %99
  %214 = xor i64 %213, %174
  %215 = xor i64 %214, %149
  %216 = xor i64 %215, %199
  %217 = xor i64 %127, %177
  %218 = xor i64 %217, %202
  %219 = xor i64 %218, %102
  %220 = xor i64 %219, %152
  %221 = xor i64 %155, %130
  %222 = xor i64 %221, %205
  %223 = xor i64 %222, %105
  %224 = xor i64 %223, %180
  %225 = xor i64 %108, %208
  %226 = xor i64 %225, %158
  %227 = xor i64 %226, %133
  %228 = xor i64 %227, %183
  %229 = tail call i64 @llvm.fshl.i64(i64 %216, i64 %216, i64 1)
  %230 = xor i64 %228, %229
  %231 = tail call i64 @llvm.fshl.i64(i64 %220, i64 %220, i64 1)
  %232 = xor i64 %212, %231
  %233 = tail call i64 @llvm.fshl.i64(i64 %224, i64 %224, i64 1)
  %234 = xor i64 %233, %216
  %235 = tail call i64 @llvm.fshl.i64(i64 %228, i64 %228, i64 1)
  %236 = xor i64 %235, %220
  %237 = tail call i64 @llvm.fshl.i64(i64 %212, i64 %212, i64 1)
  %238 = xor i64 %237, %224
  %239 = xor i64 %96, %230
  %240 = xor i64 %232, %124
  %241 = tail call i64 @llvm.fshl.i64(i64 %240, i64 %240, i64 44)
  %242 = xor i64 %234, %152
  %243 = tail call i64 @llvm.fshl.i64(i64 %242, i64 %242, i64 43)
  %244 = xor i64 %236, %180
  %245 = tail call i64 @llvm.fshl.i64(i64 %244, i64 %244, i64 21)
  %246 = xor i64 %238, %208
  %247 = tail call i64 @llvm.fshl.i64(i64 %246, i64 %246, i64 14)
  %248 = xor i64 %241, -1
  %249 = and i64 %243, %248
  %250 = or disjoint i64 %indvars.iv, 1
  %251 = getelementptr inbounds [24 x i64], ptr @KeccakF_RoundConstants, i64 0, i64 %250
  %252 = load i64, ptr %251, align 8, !tbaa !5
  %253 = xor i64 %252, %249
  %254 = xor i64 %253, %239
  %255 = xor i64 %243, -1
  %256 = and i64 %245, %255
  %257 = xor i64 %241, %256
  %258 = xor i64 %245, -1
  %259 = and i64 %247, %258
  %260 = xor i64 %259, %243
  %261 = xor i64 %247, -1
  %262 = and i64 %239, %261
  %263 = xor i64 %262, %245
  %264 = xor i64 %239, -1
  %265 = and i64 %241, %264
  %266 = xor i64 %247, %265
  %267 = xor i64 %236, %105
  %268 = tail call i64 @llvm.fshl.i64(i64 %267, i64 %267, i64 28)
  %269 = xor i64 %238, %133
  %270 = tail call i64 @llvm.fshl.i64(i64 %269, i64 %269, i64 20)
  %271 = xor i64 %230, %146
  %272 = tail call i64 @llvm.fshl.i64(i64 %271, i64 %271, i64 3)
  %273 = xor i64 %232, %174
  %274 = tail call i64 @llvm.fshl.i64(i64 %273, i64 %273, i64 45)
  %275 = xor i64 %234, %202
  %276 = tail call i64 @llvm.fshl.i64(i64 %275, i64 %275, i64 61)
  %277 = xor i64 %270, -1
  %278 = and i64 %272, %277
  %279 = xor i64 %278, %268
  %280 = xor i64 %272, -1
  %281 = and i64 %274, %280
  %282 = xor i64 %270, %281
  %283 = xor i64 %274, -1
  %284 = and i64 %276, %283
  %285 = xor i64 %284, %272
  %286 = xor i64 %276, -1
  %287 = and i64 %268, %286
  %288 = xor i64 %274, %287
  %289 = xor i64 %268, -1
  %290 = and i64 %270, %289
  %291 = xor i64 %290, %276
  %292 = xor i64 %232, %99
  %293 = tail call i64 @llvm.fshl.i64(i64 %292, i64 %292, i64 1)
  %294 = xor i64 %234, %127
  %295 = tail call i64 @llvm.fshl.i64(i64 %294, i64 %294, i64 6)
  %296 = xor i64 %236, %155
  %297 = tail call i64 @llvm.fshl.i64(i64 %296, i64 %296, i64 25)
  %298 = xor i64 %238, %183
  %299 = tail call i64 @llvm.fshl.i64(i64 %298, i64 %298, i64 8)
  %300 = xor i64 %230, %196
  %301 = tail call i64 @llvm.fshl.i64(i64 %300, i64 %300, i64 18)
  %302 = xor i64 %295, -1
  %303 = and i64 %297, %302
  %304 = xor i64 %293, %303
  %305 = xor i64 %297, -1
  %306 = and i64 %299, %305
  %307 = xor i64 %306, %295
  %308 = xor i64 %299, -1
  %309 = and i64 %301, %308
  %310 = xor i64 %309, %297
  %311 = xor i64 %301, -1
  %312 = and i64 %293, %311
  %313 = xor i64 %299, %312
  %314 = xor i64 %293, -1
  %315 = and i64 %295, %314
  %316 = xor i64 %315, %301
  %317 = xor i64 %238, %108
  %318 = tail call i64 @llvm.fshl.i64(i64 %317, i64 %317, i64 27)
  %319 = xor i64 %230, %121
  %320 = tail call i64 @llvm.fshl.i64(i64 %319, i64 %319, i64 36)
  %321 = xor i64 %232, %149
  %322 = tail call i64 @llvm.fshl.i64(i64 %321, i64 %321, i64 10)
  %323 = xor i64 %234, %177
  %324 = tail call i64 @llvm.fshl.i64(i64 %323, i64 %323, i64 15)
  %325 = xor i64 %236, %205
  %326 = tail call i64 @llvm.fshl.i64(i64 %325, i64 %325, i64 56)
  %327 = xor i64 %320, -1
  %328 = and i64 %322, %327
  %329 = xor i64 %318, %328
  %330 = xor i64 %322, -1
  %331 = and i64 %324, %330
  %332 = xor i64 %331, %320
  %333 = xor i64 %324, -1
  %334 = and i64 %326, %333
  %335 = xor i64 %322, %334
  %336 = xor i64 %326, -1
  %337 = and i64 %318, %336
  %338 = xor i64 %337, %324
  %339 = xor i64 %318, -1
  %340 = and i64 %320, %339
  %341 = xor i64 %340, %326
  %342 = xor i64 %234, %102
  %343 = tail call i64 @llvm.fshl.i64(i64 %342, i64 %342, i64 62)
  %344 = xor i64 %236, %130
  %345 = tail call i64 @llvm.fshl.i64(i64 %344, i64 %344, i64 55)
  %346 = xor i64 %238, %158
  %347 = tail call i64 @llvm.fshl.i64(i64 %346, i64 %346, i64 39)
  %348 = xor i64 %230, %171
  %349 = tail call i64 @llvm.fshl.i64(i64 %348, i64 %348, i64 41)
  %350 = xor i64 %232, %199
  %351 = tail call i64 @llvm.fshl.i64(i64 %350, i64 %350, i64 2)
  %352 = xor i64 %345, -1
  %353 = and i64 %347, %352
  %354 = xor i64 %353, %343
  %355 = xor i64 %347, -1
  %356 = and i64 %349, %355
  %357 = xor i64 %356, %345
  %358 = xor i64 %349, -1
  %359 = and i64 %351, %358
  %360 = xor i64 %347, %359
  %361 = xor i64 %351, -1
  %362 = and i64 %343, %361
  %363 = xor i64 %362, %349
  %364 = xor i64 %343, -1
  %365 = and i64 %345, %364
  %366 = xor i64 %351, %365
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 2
  %367 = icmp ult i64 %indvars.iv, 22
  br i1 %367, label %51, label %368, !llvm.loop !9

368:                                              ; preds = %51
  store i64 %254, ptr %0, align 8, !tbaa !5
  store i64 %257, ptr %3, align 8, !tbaa !5
  store i64 %260, ptr %5, align 8, !tbaa !5
  store i64 %263, ptr %7, align 8, !tbaa !5
  store i64 %266, ptr %9, align 8, !tbaa !5
  store i64 %279, ptr %11, align 8, !tbaa !5
  store i64 %282, ptr %13, align 8, !tbaa !5
  store i64 %285, ptr %15, align 8, !tbaa !5
  store i64 %288, ptr %17, align 8, !tbaa !5
  store i64 %291, ptr %19, align 8, !tbaa !5
  store i64 %304, ptr %21, align 8, !tbaa !5
  store i64 %307, ptr %23, align 8, !tbaa !5
  store i64 %310, ptr %25, align 8, !tbaa !5
  store i64 %313, ptr %27, align 8, !tbaa !5
  store i64 %316, ptr %29, align 8, !tbaa !5
  store i64 %329, ptr %31, align 8, !tbaa !5
  store i64 %332, ptr %33, align 8, !tbaa !5
  store i64 %335, ptr %35, align 8, !tbaa !5
  store i64 %338, ptr %37, align 8, !tbaa !5
  store i64 %341, ptr %39, align 8, !tbaa !5
  store i64 %354, ptr %41, align 8, !tbaa !5
  store i64 %357, ptr %43, align 8, !tbaa !5
  store i64 %360, ptr %45, align 8, !tbaa !5
  store i64 %363, ptr %47, align 8, !tbaa !5
  store i64 %366, ptr %49, align 8, !tbaa !5
  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,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,LCSSAPass,LoopRotatePass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass