; LLVM IR from rweather/lightweight-crypto :: src/combined (internal-knot-m)

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

%struct.mask_x4_uint64_t = type { i64, i64, i64, i64 }
%struct.mask_x4_uint32_t = type { i32, i32, i32, i32 }
%struct.knot384_masked_state_t = type { [4 x %struct.mask_x4_uint64_t], [4 x %struct.mask_x4_uint32_t] }

@rc7 = external hidden constant [104 x i8], align 16

declare i64 @aead_random_generate_64() #0

; Function Attrs: nounwind uwtable
define dso_local void @knot384_masked_permute_7(ptr noundef %0, i8 noundef zeroext %1) #1 {
  %3 = alloca ptr, align 8
  %4 = alloca i8, align 1
  %5 = alloca ptr, align 8
  %6 = alloca %struct.mask_x4_uint64_t, align 8
  %7 = alloca %struct.mask_x4_uint64_t, align 8
  %8 = alloca %struct.mask_x4_uint64_t, align 8
  %9 = alloca %struct.mask_x4_uint32_t, align 4
  %10 = alloca %struct.mask_x4_uint32_t, align 4
  %11 = alloca %struct.mask_x4_uint32_t, align 4
  %12 = alloca %struct.mask_x4_uint64_t, align 8
  %13 = alloca %struct.mask_x4_uint64_t, align 8
  %14 = alloca %struct.mask_x4_uint64_t, align 8
  %15 = alloca i64, align 8
  %16 = alloca %struct.mask_x4_uint32_t, align 4
  %17 = alloca %struct.mask_x4_uint32_t, align 4
  %18 = alloca %struct.mask_x4_uint32_t, align 4
  %19 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store i8 %1, ptr %4, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #4
  store ptr @rc7, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %6) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #4
  br label %20

20:                                               ; preds = %2638, %2
  %21 = load i8, ptr %4, align 1, !tbaa !9
  %22 = zext i8 %21 to i32
  %23 = icmp sgt i32 %22, 0
  br i1 %23, label %24, label %2643

24:                                               ; preds = %20
  br label %25

25:                                               ; preds = %24
  %26 = load ptr, ptr %5, align 8, !tbaa !5
  %27 = load i8, ptr %26, align 1, !tbaa !9
  %28 = zext i8 %27 to i64
  %29 = load ptr, ptr %3, align 8, !tbaa !5
  %30 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %29, i32 0, i32 0
  %31 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %30, i64 0, i64 0
  %32 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %31, i32 0, i32 0
  %33 = load i64, ptr %32, align 8, !tbaa !10
  %34 = xor i64 %33, %28
  store i64 %34, ptr %32, align 8, !tbaa !10
  br label %35

35:                                               ; preds = %25
  br label %36

36:                                               ; preds = %35
  br label %37

37:                                               ; preds = %36
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  %38 = load ptr, ptr %3, align 8, !tbaa !5
  %39 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %38, i32 0, i32 0
  %40 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %39, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %12, ptr align 8 %40, i64 32, i1 false), !tbaa.struct !13
  br label %41

41:                                               ; preds = %37
  %42 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 0
  %43 = load i64, ptr %42, align 8, !tbaa !10
  %44 = xor i64 %43, -1
  %45 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 0
  store i64 %44, ptr %45, align 8, !tbaa !10
  br label %46

46:                                               ; preds = %41
  br label %47

47:                                               ; preds = %46
  %48 = load ptr, ptr %3, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %48, i32 0, i32 0
  %50 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %49, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %13, ptr align 8 %50, i64 32, i1 false), !tbaa.struct !13
  br label %51

51:                                               ; preds = %47
  %52 = load ptr, ptr %3, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %52, i32 0, i32 0
  %54 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %53, i64 0, i64 1
  %55 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %54, i32 0, i32 0
  %56 = load i64, ptr %55, align 8, !tbaa !10
  %57 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 0
  %58 = load i64, ptr %57, align 8, !tbaa !10
  %59 = and i64 %56, %58
  %60 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 0
  %61 = load i64, ptr %60, align 8, !tbaa !10
  %62 = xor i64 %61, %59
  store i64 %62, ptr %60, align 8, !tbaa !10
  br label %63

63:                                               ; preds = %51
  %64 = call i64 @aead_random_generate_64()
  store i64 %64, ptr %15, align 8, !tbaa !14
  %65 = load i64, ptr %15, align 8, !tbaa !14
  %66 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 0
  %67 = load i64, ptr %66, align 8, !tbaa !10
  %68 = xor i64 %67, %65
  store i64 %68, ptr %66, align 8, !tbaa !10
  %69 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 1
  %70 = load i64, ptr %69, align 8, !tbaa !15
  %71 = load ptr, ptr %3, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %71, i32 0, i32 0
  %73 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %72, i64 0, i64 1
  %74 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %73, i32 0, i32 0
  %75 = load i64, ptr %74, align 8, !tbaa !10
  %76 = and i64 %70, %75
  %77 = load i64, ptr %15, align 8, !tbaa !14
  %78 = xor i64 %77, %76
  store i64 %78, ptr %15, align 8, !tbaa !14
  %79 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 1
  %80 = load i64, ptr %79, align 8, !tbaa !15
  %81 = load i64, ptr %15, align 8, !tbaa !14
  %82 = xor i64 %80, %81
  %83 = load ptr, ptr %3, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %83, i32 0, i32 0
  %85 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %84, i64 0, i64 1
  %86 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %85, i32 0, i32 1
  %87 = load i64, ptr %86, align 8, !tbaa !15
  %88 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 0
  %89 = load i64, ptr %88, align 8, !tbaa !10
  %90 = and i64 %87, %89
  %91 = xor i64 %82, %90
  %92 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 1
  store i64 %91, ptr %92, align 8, !tbaa !15
  br label %93

93:                                               ; preds = %63
  br label %94

94:                                               ; preds = %93
  br label %95

95:                                               ; preds = %94
  %96 = call i64 @aead_random_generate_64()
  store i64 %96, ptr %15, align 8, !tbaa !14
  %97 = load i64, ptr %15, align 8, !tbaa !14
  %98 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 0
  %99 = load i64, ptr %98, align 8, !tbaa !10
  %100 = xor i64 %99, %97
  store i64 %100, ptr %98, align 8, !tbaa !10
  %101 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 2
  %102 = load i64, ptr %101, align 8, !tbaa !16
  %103 = load ptr, ptr %3, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %103, i32 0, i32 0
  %105 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %104, i64 0, i64 1
  %106 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %105, i32 0, i32 0
  %107 = load i64, ptr %106, align 8, !tbaa !10
  %108 = and i64 %102, %107
  %109 = load i64, ptr %15, align 8, !tbaa !14
  %110 = xor i64 %109, %108
  store i64 %110, ptr %15, align 8, !tbaa !14
  %111 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 2
  %112 = load i64, ptr %111, align 8, !tbaa !16
  %113 = load i64, ptr %15, align 8, !tbaa !14
  %114 = xor i64 %112, %113
  %115 = load ptr, ptr %3, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %115, i32 0, i32 0
  %117 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %116, i64 0, i64 1
  %118 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %117, i32 0, i32 2
  %119 = load i64, ptr %118, align 8, !tbaa !16
  %120 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 0
  %121 = load i64, ptr %120, align 8, !tbaa !10
  %122 = and i64 %119, %121
  %123 = xor i64 %114, %122
  %124 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 2
  store i64 %123, ptr %124, align 8, !tbaa !16
  br label %125

125:                                              ; preds = %95
  br label %126

126:                                              ; preds = %125
  br label %127

127:                                              ; preds = %126
  %128 = call i64 @aead_random_generate_64()
  store i64 %128, ptr %15, align 8, !tbaa !14
  %129 = load i64, ptr %15, align 8, !tbaa !14
  %130 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 0
  %131 = load i64, ptr %130, align 8, !tbaa !10
  %132 = xor i64 %131, %129
  store i64 %132, ptr %130, align 8, !tbaa !10
  %133 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 3
  %134 = load i64, ptr %133, align 8, !tbaa !17
  %135 = load ptr, ptr %3, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %135, i32 0, i32 0
  %137 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %136, i64 0, i64 1
  %138 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %137, i32 0, i32 0
  %139 = load i64, ptr %138, align 8, !tbaa !10
  %140 = and i64 %134, %139
  %141 = load i64, ptr %15, align 8, !tbaa !14
  %142 = xor i64 %141, %140
  store i64 %142, ptr %15, align 8, !tbaa !14
  %143 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 3
  %144 = load i64, ptr %143, align 8, !tbaa !17
  %145 = load i64, ptr %15, align 8, !tbaa !14
  %146 = xor i64 %144, %145
  %147 = load ptr, ptr %3, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %147, i32 0, i32 0
  %149 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %148, i64 0, i64 1
  %150 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %149, i32 0, i32 3
  %151 = load i64, ptr %150, align 8, !tbaa !17
  %152 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 0
  %153 = load i64, ptr %152, align 8, !tbaa !10
  %154 = and i64 %151, %153
  %155 = xor i64 %146, %154
  %156 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 3
  store i64 %155, ptr %156, align 8, !tbaa !17
  br label %157

157:                                              ; preds = %127
  br label %158

158:                                              ; preds = %157
  %159 = load ptr, ptr %3, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %159, i32 0, i32 0
  %161 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %160, i64 0, i64 1
  %162 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %161, i32 0, i32 1
  %163 = load i64, ptr %162, align 8, !tbaa !15
  %164 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 1
  %165 = load i64, ptr %164, align 8, !tbaa !15
  %166 = and i64 %163, %165
  %167 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 1
  %168 = load i64, ptr %167, align 8, !tbaa !15
  %169 = xor i64 %168, %166
  store i64 %169, ptr %167, align 8, !tbaa !15
  br label %170

170:                                              ; preds = %158
  %171 = call i64 @aead_random_generate_64()
  store i64 %171, ptr %15, align 8, !tbaa !14
  %172 = load i64, ptr %15, align 8, !tbaa !14
  %173 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 1
  %174 = load i64, ptr %173, align 8, !tbaa !15
  %175 = xor i64 %174, %172
  store i64 %175, ptr %173, align 8, !tbaa !15
  %176 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 2
  %177 = load i64, ptr %176, align 8, !tbaa !16
  %178 = load ptr, ptr %3, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %178, i32 0, i32 0
  %180 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %179, i64 0, i64 1
  %181 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %180, i32 0, i32 1
  %182 = load i64, ptr %181, align 8, !tbaa !15
  %183 = and i64 %177, %182
  %184 = load i64, ptr %15, align 8, !tbaa !14
  %185 = xor i64 %184, %183
  store i64 %185, ptr %15, align 8, !tbaa !14
  %186 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 2
  %187 = load i64, ptr %186, align 8, !tbaa !16
  %188 = load i64, ptr %15, align 8, !tbaa !14
  %189 = xor i64 %187, %188
  %190 = load ptr, ptr %3, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %190, i32 0, i32 0
  %192 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %191, i64 0, i64 1
  %193 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %192, i32 0, i32 2
  %194 = load i64, ptr %193, align 8, !tbaa !16
  %195 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 1
  %196 = load i64, ptr %195, align 8, !tbaa !15
  %197 = and i64 %194, %196
  %198 = xor i64 %189, %197
  %199 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 2
  store i64 %198, ptr %199, align 8, !tbaa !16
  br label %200

200:                                              ; preds = %170
  br label %201

201:                                              ; preds = %200
  br label %202

202:                                              ; preds = %201
  %203 = call i64 @aead_random_generate_64()
  store i64 %203, ptr %15, align 8, !tbaa !14
  %204 = load i64, ptr %15, align 8, !tbaa !14
  %205 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 1
  %206 = load i64, ptr %205, align 8, !tbaa !15
  %207 = xor i64 %206, %204
  store i64 %207, ptr %205, align 8, !tbaa !15
  %208 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 3
  %209 = load i64, ptr %208, align 8, !tbaa !17
  %210 = load ptr, ptr %3, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %210, i32 0, i32 0
  %212 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %211, i64 0, i64 1
  %213 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %212, i32 0, i32 1
  %214 = load i64, ptr %213, align 8, !tbaa !15
  %215 = and i64 %209, %214
  %216 = load i64, ptr %15, align 8, !tbaa !14
  %217 = xor i64 %216, %215
  store i64 %217, ptr %15, align 8, !tbaa !14
  %218 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 3
  %219 = load i64, ptr %218, align 8, !tbaa !17
  %220 = load i64, ptr %15, align 8, !tbaa !14
  %221 = xor i64 %219, %220
  %222 = load ptr, ptr %3, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %222, i32 0, i32 0
  %224 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %223, i64 0, i64 1
  %225 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %224, i32 0, i32 3
  %226 = load i64, ptr %225, align 8, !tbaa !17
  %227 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 1
  %228 = load i64, ptr %227, align 8, !tbaa !15
  %229 = and i64 %226, %228
  %230 = xor i64 %221, %229
  %231 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 3
  store i64 %230, ptr %231, align 8, !tbaa !17
  br label %232

232:                                              ; preds = %202
  br label %233

233:                                              ; preds = %232
  %234 = load ptr, ptr %3, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %234, i32 0, i32 0
  %236 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %235, i64 0, i64 1
  %237 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %236, i32 0, i32 2
  %238 = load i64, ptr %237, align 8, !tbaa !16
  %239 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 2
  %240 = load i64, ptr %239, align 8, !tbaa !16
  %241 = and i64 %238, %240
  %242 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 2
  %243 = load i64, ptr %242, align 8, !tbaa !16
  %244 = xor i64 %243, %241
  store i64 %244, ptr %242, align 8, !tbaa !16
  br label %245

245:                                              ; preds = %233
  %246 = call i64 @aead_random_generate_64()
  store i64 %246, ptr %15, align 8, !tbaa !14
  %247 = load i64, ptr %15, align 8, !tbaa !14
  %248 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 2
  %249 = load i64, ptr %248, align 8, !tbaa !16
  %250 = xor i64 %249, %247
  store i64 %250, ptr %248, align 8, !tbaa !16
  %251 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 3
  %252 = load i64, ptr %251, align 8, !tbaa !17
  %253 = load ptr, ptr %3, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %253, i32 0, i32 0
  %255 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %254, i64 0, i64 1
  %256 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %255, i32 0, i32 2
  %257 = load i64, ptr %256, align 8, !tbaa !16
  %258 = and i64 %252, %257
  %259 = load i64, ptr %15, align 8, !tbaa !14
  %260 = xor i64 %259, %258
  store i64 %260, ptr %15, align 8, !tbaa !14
  %261 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 3
  %262 = load i64, ptr %261, align 8, !tbaa !17
  %263 = load i64, ptr %15, align 8, !tbaa !14
  %264 = xor i64 %262, %263
  %265 = load ptr, ptr %3, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %265, i32 0, i32 0
  %267 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %266, i64 0, i64 1
  %268 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %267, i32 0, i32 3
  %269 = load i64, ptr %268, align 8, !tbaa !17
  %270 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 2
  %271 = load i64, ptr %270, align 8, !tbaa !16
  %272 = and i64 %269, %271
  %273 = xor i64 %264, %272
  %274 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 3
  store i64 %273, ptr %274, align 8, !tbaa !17
  br label %275

275:                                              ; preds = %245
  br label %276

276:                                              ; preds = %275
  %277 = load ptr, ptr %3, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %277, i32 0, i32 0
  %279 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %278, i64 0, i64 1
  %280 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %279, i32 0, i32 3
  %281 = load i64, ptr %280, align 8, !tbaa !17
  %282 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 3
  %283 = load i64, ptr %282, align 8, !tbaa !17
  %284 = and i64 %281, %283
  %285 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 3
  %286 = load i64, ptr %285, align 8, !tbaa !17
  %287 = xor i64 %286, %284
  store i64 %287, ptr %285, align 8, !tbaa !17
  br label %288

288:                                              ; preds = %276
  br label %289

289:                                              ; preds = %288
  br label %290

290:                                              ; preds = %289
  %291 = load ptr, ptr %3, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %291, i32 0, i32 0
  %293 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %292, i64 0, i64 3
  %294 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %293, i32 0, i32 0
  %295 = load i64, ptr %294, align 8, !tbaa !10
  %296 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 0
  %297 = load i64, ptr %296, align 8, !tbaa !10
  %298 = xor i64 %295, %297
  %299 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 0
  store i64 %298, ptr %299, align 8, !tbaa !10
  %300 = load ptr, ptr %3, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %300, i32 0, i32 0
  %302 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %301, i64 0, i64 3
  %303 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %302, i32 0, i32 1
  %304 = load i64, ptr %303, align 8, !tbaa !15
  %305 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 1
  %306 = load i64, ptr %305, align 8, !tbaa !15
  %307 = xor i64 %304, %306
  %308 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 1
  store i64 %307, ptr %308, align 8, !tbaa !15
  %309 = load ptr, ptr %3, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %309, i32 0, i32 0
  %311 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %310, i64 0, i64 3
  %312 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %311, i32 0, i32 2
  %313 = load i64, ptr %312, align 8, !tbaa !16
  %314 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 2
  %315 = load i64, ptr %314, align 8, !tbaa !16
  %316 = xor i64 %313, %315
  %317 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 2
  store i64 %316, ptr %317, align 8, !tbaa !16
  %318 = load ptr, ptr %3, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %318, i32 0, i32 0
  %320 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %319, i64 0, i64 3
  %321 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %320, i32 0, i32 3
  %322 = load i64, ptr %321, align 8, !tbaa !17
  %323 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 3
  %324 = load i64, ptr %323, align 8, !tbaa !17
  %325 = xor i64 %322, %324
  %326 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 3
  store i64 %325, ptr %326, align 8, !tbaa !17
  br label %327

327:                                              ; preds = %290
  br label %328

328:                                              ; preds = %327
  br label %329

329:                                              ; preds = %328
  %330 = load ptr, ptr %3, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %330, i32 0, i32 0
  %332 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %331, i64 0, i64 3
  %333 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %332, i32 0, i32 0
  %334 = load i64, ptr %333, align 8, !tbaa !10
  %335 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 0
  %336 = load i64, ptr %335, align 8, !tbaa !10
  %337 = xor i64 %334, %336
  %338 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 0
  store i64 %337, ptr %338, align 8, !tbaa !10
  %339 = load ptr, ptr %3, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %339, i32 0, i32 0
  %341 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %340, i64 0, i64 3
  %342 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %341, i32 0, i32 1
  %343 = load i64, ptr %342, align 8, !tbaa !15
  %344 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 1
  %345 = load i64, ptr %344, align 8, !tbaa !15
  %346 = xor i64 %343, %345
  %347 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 1
  store i64 %346, ptr %347, align 8, !tbaa !15
  %348 = load ptr, ptr %3, align 8, !tbaa !5
  %349 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %348, i32 0, i32 0
  %350 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %349, i64 0, i64 3
  %351 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %350, i32 0, i32 2
  %352 = load i64, ptr %351, align 8, !tbaa !16
  %353 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 2
  %354 = load i64, ptr %353, align 8, !tbaa !16
  %355 = xor i64 %352, %354
  %356 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 2
  store i64 %355, ptr %356, align 8, !tbaa !16
  %357 = load ptr, ptr %3, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %357, i32 0, i32 0
  %359 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %358, i64 0, i64 3
  %360 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %359, i32 0, i32 3
  %361 = load i64, ptr %360, align 8, !tbaa !17
  %362 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 3
  %363 = load i64, ptr %362, align 8, !tbaa !17
  %364 = xor i64 %361, %363
  %365 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 3
  store i64 %364, ptr %365, align 8, !tbaa !17
  br label %366

366:                                              ; preds = %329
  br label %367

367:                                              ; preds = %366
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %7, ptr align 8 %14, i64 32, i1 false), !tbaa.struct !13
  br label %368

368:                                              ; preds = %367
  %369 = load ptr, ptr %3, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %369, i32 0, i32 0
  %371 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %370, i64 0, i64 1
  %372 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %371, i32 0, i32 0
  %373 = load i64, ptr %372, align 8, !tbaa !10
  %374 = load ptr, ptr %3, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %374, i32 0, i32 0
  %376 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %375, i64 0, i64 2
  %377 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %376, i32 0, i32 0
  %378 = load i64, ptr %377, align 8, !tbaa !10
  %379 = or i64 %373, %378
  %380 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 0
  %381 = load i64, ptr %380, align 8, !tbaa !10
  %382 = xor i64 %381, %379
  store i64 %382, ptr %380, align 8, !tbaa !10
  br label %383

383:                                              ; preds = %368
  %384 = call i64 @aead_random_generate_64()
  store i64 %384, ptr %15, align 8, !tbaa !14
  %385 = load i64, ptr %15, align 8, !tbaa !14
  %386 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 0
  %387 = load i64, ptr %386, align 8, !tbaa !10
  %388 = xor i64 %387, %385
  store i64 %388, ptr %386, align 8, !tbaa !10
  %389 = load ptr, ptr %3, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %389, i32 0, i32 0
  %391 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %390, i64 0, i64 2
  %392 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %391, i32 0, i32 1
  %393 = load i64, ptr %392, align 8, !tbaa !15
  %394 = load ptr, ptr %3, align 8, !tbaa !5
  %395 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %394, i32 0, i32 0
  %396 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %395, i64 0, i64 1
  %397 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %396, i32 0, i32 0
  %398 = load i64, ptr %397, align 8, !tbaa !10
  %399 = xor i64 %398, -1
  %400 = and i64 %393, %399
  %401 = load i64, ptr %15, align 8, !tbaa !14
  %402 = xor i64 %401, %400
  store i64 %402, ptr %15, align 8, !tbaa !14
  %403 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 1
  %404 = load i64, ptr %403, align 8, !tbaa !15
  %405 = load i64, ptr %15, align 8, !tbaa !14
  %406 = xor i64 %404, %405
  %407 = load ptr, ptr %3, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %407, i32 0, i32 0
  %409 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %408, i64 0, i64 1
  %410 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %409, i32 0, i32 1
  %411 = load i64, ptr %410, align 8, !tbaa !15
  %412 = load ptr, ptr %3, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %412, i32 0, i32 0
  %414 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %413, i64 0, i64 2
  %415 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %414, i32 0, i32 0
  %416 = load i64, ptr %415, align 8, !tbaa !10
  %417 = xor i64 %416, -1
  %418 = and i64 %411, %417
  %419 = xor i64 %406, %418
  %420 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 1
  store i64 %419, ptr %420, align 8, !tbaa !15
  br label %421

421:                                              ; preds = %383
  br label %422

422:                                              ; preds = %421
  br label %423

423:                                              ; preds = %422
  %424 = call i64 @aead_random_generate_64()
  store i64 %424, ptr %15, align 8, !tbaa !14
  %425 = load i64, ptr %15, align 8, !tbaa !14
  %426 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 0
  %427 = load i64, ptr %426, align 8, !tbaa !10
  %428 = xor i64 %427, %425
  store i64 %428, ptr %426, align 8, !tbaa !10
  %429 = load ptr, ptr %3, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %429, i32 0, i32 0
  %431 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %430, i64 0, i64 2
  %432 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %431, i32 0, i32 2
  %433 = load i64, ptr %432, align 8, !tbaa !16
  %434 = load ptr, ptr %3, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %434, i32 0, i32 0
  %436 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %435, i64 0, i64 1
  %437 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %436, i32 0, i32 0
  %438 = load i64, ptr %437, align 8, !tbaa !10
  %439 = xor i64 %438, -1
  %440 = and i64 %433, %439
  %441 = load i64, ptr %15, align 8, !tbaa !14
  %442 = xor i64 %441, %440
  store i64 %442, ptr %15, align 8, !tbaa !14
  %443 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 2
  %444 = load i64, ptr %443, align 8, !tbaa !16
  %445 = load i64, ptr %15, align 8, !tbaa !14
  %446 = xor i64 %444, %445
  %447 = load ptr, ptr %3, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %447, i32 0, i32 0
  %449 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %448, i64 0, i64 1
  %450 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %449, i32 0, i32 2
  %451 = load i64, ptr %450, align 8, !tbaa !16
  %452 = load ptr, ptr %3, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %452, i32 0, i32 0
  %454 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %453, i64 0, i64 2
  %455 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %454, i32 0, i32 0
  %456 = load i64, ptr %455, align 8, !tbaa !10
  %457 = xor i64 %456, -1
  %458 = and i64 %451, %457
  %459 = xor i64 %446, %458
  %460 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 2
  store i64 %459, ptr %460, align 8, !tbaa !16
  br label %461

461:                                              ; preds = %423
  br label %462

462:                                              ; preds = %461
  br label %463

463:                                              ; preds = %462
  %464 = call i64 @aead_random_generate_64()
  store i64 %464, ptr %15, align 8, !tbaa !14
  %465 = load i64, ptr %15, align 8, !tbaa !14
  %466 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 0
  %467 = load i64, ptr %466, align 8, !tbaa !10
  %468 = xor i64 %467, %465
  store i64 %468, ptr %466, align 8, !tbaa !10
  %469 = load ptr, ptr %3, align 8, !tbaa !5
  %470 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %469, i32 0, i32 0
  %471 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %470, i64 0, i64 2
  %472 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %471, i32 0, i32 3
  %473 = load i64, ptr %472, align 8, !tbaa !17
  %474 = load ptr, ptr %3, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %474, i32 0, i32 0
  %476 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %475, i64 0, i64 1
  %477 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %476, i32 0, i32 0
  %478 = load i64, ptr %477, align 8, !tbaa !10
  %479 = xor i64 %478, -1
  %480 = and i64 %473, %479
  %481 = load i64, ptr %15, align 8, !tbaa !14
  %482 = xor i64 %481, %480
  store i64 %482, ptr %15, align 8, !tbaa !14
  %483 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 3
  %484 = load i64, ptr %483, align 8, !tbaa !17
  %485 = load i64, ptr %15, align 8, !tbaa !14
  %486 = xor i64 %484, %485
  %487 = load ptr, ptr %3, align 8, !tbaa !5
  %488 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %487, i32 0, i32 0
  %489 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %488, i64 0, i64 1
  %490 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %489, i32 0, i32 3
  %491 = load i64, ptr %490, align 8, !tbaa !17
  %492 = load ptr, ptr %3, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %492, i32 0, i32 0
  %494 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %493, i64 0, i64 2
  %495 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %494, i32 0, i32 0
  %496 = load i64, ptr %495, align 8, !tbaa !10
  %497 = xor i64 %496, -1
  %498 = and i64 %491, %497
  %499 = xor i64 %486, %498
  %500 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 3
  store i64 %499, ptr %500, align 8, !tbaa !17
  br label %501

501:                                              ; preds = %463
  br label %502

502:                                              ; preds = %501
  %503 = load ptr, ptr %3, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %503, i32 0, i32 0
  %505 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %504, i64 0, i64 1
  %506 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %505, i32 0, i32 1
  %507 = load i64, ptr %506, align 8, !tbaa !15
  %508 = load ptr, ptr %3, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %508, i32 0, i32 0
  %510 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %509, i64 0, i64 2
  %511 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %510, i32 0, i32 1
  %512 = load i64, ptr %511, align 8, !tbaa !15
  %513 = and i64 %507, %512
  %514 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 1
  %515 = load i64, ptr %514, align 8, !tbaa !15
  %516 = xor i64 %515, %513
  store i64 %516, ptr %514, align 8, !tbaa !15
  br label %517

517:                                              ; preds = %502
  %518 = call i64 @aead_random_generate_64()
  store i64 %518, ptr %15, align 8, !tbaa !14
  %519 = load i64, ptr %15, align 8, !tbaa !14
  %520 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 1
  %521 = load i64, ptr %520, align 8, !tbaa !15
  %522 = xor i64 %521, %519
  store i64 %522, ptr %520, align 8, !tbaa !15
  %523 = load ptr, ptr %3, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %523, i32 0, i32 0
  %525 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %524, i64 0, i64 2
  %526 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %525, i32 0, i32 2
  %527 = load i64, ptr %526, align 8, !tbaa !16
  %528 = load ptr, ptr %3, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %528, i32 0, i32 0
  %530 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %529, i64 0, i64 1
  %531 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %530, i32 0, i32 1
  %532 = load i64, ptr %531, align 8, !tbaa !15
  %533 = and i64 %527, %532
  %534 = load i64, ptr %15, align 8, !tbaa !14
  %535 = xor i64 %534, %533
  store i64 %535, ptr %15, align 8, !tbaa !14
  %536 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 2
  %537 = load i64, ptr %536, align 8, !tbaa !16
  %538 = load i64, ptr %15, align 8, !tbaa !14
  %539 = xor i64 %537, %538
  %540 = load ptr, ptr %3, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %540, i32 0, i32 0
  %542 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %541, i64 0, i64 1
  %543 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %542, i32 0, i32 2
  %544 = load i64, ptr %543, align 8, !tbaa !16
  %545 = load ptr, ptr %3, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %545, i32 0, i32 0
  %547 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %546, i64 0, i64 2
  %548 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %547, i32 0, i32 1
  %549 = load i64, ptr %548, align 8, !tbaa !15
  %550 = and i64 %544, %549
  %551 = xor i64 %539, %550
  %552 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 2
  store i64 %551, ptr %552, align 8, !tbaa !16
  br label %553

553:                                              ; preds = %517
  br label %554

554:                                              ; preds = %553
  br label %555

555:                                              ; preds = %554
  %556 = call i64 @aead_random_generate_64()
  store i64 %556, ptr %15, align 8, !tbaa !14
  %557 = load i64, ptr %15, align 8, !tbaa !14
  %558 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 1
  %559 = load i64, ptr %558, align 8, !tbaa !15
  %560 = xor i64 %559, %557
  store i64 %560, ptr %558, align 8, !tbaa !15
  %561 = load ptr, ptr %3, align 8, !tbaa !5
  %562 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %561, i32 0, i32 0
  %563 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %562, i64 0, i64 2
  %564 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %563, i32 0, i32 3
  %565 = load i64, ptr %564, align 8, !tbaa !17
  %566 = load ptr, ptr %3, align 8, !tbaa !5
  %567 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %566, i32 0, i32 0
  %568 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %567, i64 0, i64 1
  %569 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %568, i32 0, i32 1
  %570 = load i64, ptr %569, align 8, !tbaa !15
  %571 = and i64 %565, %570
  %572 = load i64, ptr %15, align 8, !tbaa !14
  %573 = xor i64 %572, %571
  store i64 %573, ptr %15, align 8, !tbaa !14
  %574 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 3
  %575 = load i64, ptr %574, align 8, !tbaa !17
  %576 = load i64, ptr %15, align 8, !tbaa !14
  %577 = xor i64 %575, %576
  %578 = load ptr, ptr %3, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %578, i32 0, i32 0
  %580 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %579, i64 0, i64 1
  %581 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %580, i32 0, i32 3
  %582 = load i64, ptr %581, align 8, !tbaa !17
  %583 = load ptr, ptr %3, align 8, !tbaa !5
  %584 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %583, i32 0, i32 0
  %585 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %584, i64 0, i64 2
  %586 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %585, i32 0, i32 1
  %587 = load i64, ptr %586, align 8, !tbaa !15
  %588 = and i64 %582, %587
  %589 = xor i64 %577, %588
  %590 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 3
  store i64 %589, ptr %590, align 8, !tbaa !17
  br label %591

591:                                              ; preds = %555
  br label %592

592:                                              ; preds = %591
  %593 = load ptr, ptr %3, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %593, i32 0, i32 0
  %595 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %594, i64 0, i64 1
  %596 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %595, i32 0, i32 2
  %597 = load i64, ptr %596, align 8, !tbaa !16
  %598 = load ptr, ptr %3, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %598, i32 0, i32 0
  %600 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %599, i64 0, i64 2
  %601 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %600, i32 0, i32 2
  %602 = load i64, ptr %601, align 8, !tbaa !16
  %603 = and i64 %597, %602
  %604 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 2
  %605 = load i64, ptr %604, align 8, !tbaa !16
  %606 = xor i64 %605, %603
  store i64 %606, ptr %604, align 8, !tbaa !16
  br label %607

607:                                              ; preds = %592
  %608 = call i64 @aead_random_generate_64()
  store i64 %608, ptr %15, align 8, !tbaa !14
  %609 = load i64, ptr %15, align 8, !tbaa !14
  %610 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 2
  %611 = load i64, ptr %610, align 8, !tbaa !16
  %612 = xor i64 %611, %609
  store i64 %612, ptr %610, align 8, !tbaa !16
  %613 = load ptr, ptr %3, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %613, i32 0, i32 0
  %615 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %614, i64 0, i64 2
  %616 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %615, i32 0, i32 3
  %617 = load i64, ptr %616, align 8, !tbaa !17
  %618 = load ptr, ptr %3, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %618, i32 0, i32 0
  %620 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %619, i64 0, i64 1
  %621 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %620, i32 0, i32 2
  %622 = load i64, ptr %621, align 8, !tbaa !16
  %623 = and i64 %617, %622
  %624 = load i64, ptr %15, align 8, !tbaa !14
  %625 = xor i64 %624, %623
  store i64 %625, ptr %15, align 8, !tbaa !14
  %626 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 3
  %627 = load i64, ptr %626, align 8, !tbaa !17
  %628 = load i64, ptr %15, align 8, !tbaa !14
  %629 = xor i64 %627, %628
  %630 = load ptr, ptr %3, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %630, i32 0, i32 0
  %632 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %631, i64 0, i64 1
  %633 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %632, i32 0, i32 3
  %634 = load i64, ptr %633, align 8, !tbaa !17
  %635 = load ptr, ptr %3, align 8, !tbaa !5
  %636 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %635, i32 0, i32 0
  %637 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %636, i64 0, i64 2
  %638 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %637, i32 0, i32 2
  %639 = load i64, ptr %638, align 8, !tbaa !16
  %640 = and i64 %634, %639
  %641 = xor i64 %629, %640
  %642 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 3
  store i64 %641, ptr %642, align 8, !tbaa !17
  br label %643

643:                                              ; preds = %607
  br label %644

644:                                              ; preds = %643
  %645 = load ptr, ptr %3, align 8, !tbaa !5
  %646 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %645, i32 0, i32 0
  %647 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %646, i64 0, i64 1
  %648 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %647, i32 0, i32 3
  %649 = load i64, ptr %648, align 8, !tbaa !17
  %650 = load ptr, ptr %3, align 8, !tbaa !5
  %651 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %650, i32 0, i32 0
  %652 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %651, i64 0, i64 2
  %653 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %652, i32 0, i32 3
  %654 = load i64, ptr %653, align 8, !tbaa !17
  %655 = and i64 %649, %654
  %656 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 3
  %657 = load i64, ptr %656, align 8, !tbaa !17
  %658 = xor i64 %657, %655
  store i64 %658, ptr %656, align 8, !tbaa !17
  br label %659

659:                                              ; preds = %644
  br label %660

660:                                              ; preds = %659
  br label %661

661:                                              ; preds = %660
  %662 = load ptr, ptr %3, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %662, i32 0, i32 0
  %664 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %663, i64 0, i64 1
  %665 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %664, i32 0, i32 0
  %666 = load i64, ptr %665, align 8, !tbaa !10
  %667 = load ptr, ptr %3, align 8, !tbaa !5
  %668 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %667, i32 0, i32 0
  %669 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %668, i64 0, i64 3
  %670 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %669, i32 0, i32 0
  %671 = load i64, ptr %670, align 8, !tbaa !10
  %672 = xor i64 %666, %671
  %673 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 0
  store i64 %672, ptr %673, align 8, !tbaa !10
  %674 = load ptr, ptr %3, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %674, i32 0, i32 0
  %676 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %675, i64 0, i64 1
  %677 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %676, i32 0, i32 1
  %678 = load i64, ptr %677, align 8, !tbaa !15
  %679 = load ptr, ptr %3, align 8, !tbaa !5
  %680 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %679, i32 0, i32 0
  %681 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %680, i64 0, i64 3
  %682 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %681, i32 0, i32 1
  %683 = load i64, ptr %682, align 8, !tbaa !15
  %684 = xor i64 %678, %683
  %685 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 1
  store i64 %684, ptr %685, align 8, !tbaa !15
  %686 = load ptr, ptr %3, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %686, i32 0, i32 0
  %688 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %687, i64 0, i64 1
  %689 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %688, i32 0, i32 2
  %690 = load i64, ptr %689, align 8, !tbaa !16
  %691 = load ptr, ptr %3, align 8, !tbaa !5
  %692 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %691, i32 0, i32 0
  %693 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %692, i64 0, i64 3
  %694 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %693, i32 0, i32 2
  %695 = load i64, ptr %694, align 8, !tbaa !16
  %696 = xor i64 %690, %695
  %697 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 2
  store i64 %696, ptr %697, align 8, !tbaa !16
  %698 = load ptr, ptr %3, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %698, i32 0, i32 0
  %700 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %699, i64 0, i64 1
  %701 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %700, i32 0, i32 3
  %702 = load i64, ptr %701, align 8, !tbaa !17
  %703 = load ptr, ptr %3, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %703, i32 0, i32 0
  %705 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %704, i64 0, i64 3
  %706 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %705, i32 0, i32 3
  %707 = load i64, ptr %706, align 8, !tbaa !17
  %708 = xor i64 %702, %707
  %709 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 3
  store i64 %708, ptr %709, align 8, !tbaa !17
  br label %710

710:                                              ; preds = %661
  br label %711

711:                                              ; preds = %710
  %712 = load ptr, ptr %3, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %712, i32 0, i32 0
  %714 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %713, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %714, ptr align 8 %12, i64 32, i1 false), !tbaa.struct !13
  br label %715

715:                                              ; preds = %711
  %716 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 0
  %717 = load i64, ptr %716, align 8, !tbaa !10
  %718 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 0
  %719 = load i64, ptr %718, align 8, !tbaa !10
  %720 = and i64 %717, %719
  %721 = load ptr, ptr %3, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %721, i32 0, i32 0
  %723 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %722, i64 0, i64 0
  %724 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %723, i32 0, i32 0
  %725 = load i64, ptr %724, align 8, !tbaa !10
  %726 = xor i64 %725, %720
  store i64 %726, ptr %724, align 8, !tbaa !10
  br label %727

727:                                              ; preds = %715
  %728 = call i64 @aead_random_generate_64()
  store i64 %728, ptr %15, align 8, !tbaa !14
  %729 = load i64, ptr %15, align 8, !tbaa !14
  %730 = load ptr, ptr %3, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %730, i32 0, i32 0
  %732 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %731, i64 0, i64 0
  %733 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %732, i32 0, i32 0
  %734 = load i64, ptr %733, align 8, !tbaa !10
  %735 = xor i64 %734, %729
  store i64 %735, ptr %733, align 8, !tbaa !10
  %736 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 1
  %737 = load i64, ptr %736, align 8, !tbaa !15
  %738 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 0
  %739 = load i64, ptr %738, align 8, !tbaa !10
  %740 = and i64 %737, %739
  %741 = load i64, ptr %15, align 8, !tbaa !14
  %742 = xor i64 %741, %740
  store i64 %742, ptr %15, align 8, !tbaa !14
  %743 = load ptr, ptr %3, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %743, i32 0, i32 0
  %745 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %744, i64 0, i64 0
  %746 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %745, i32 0, i32 1
  %747 = load i64, ptr %746, align 8, !tbaa !15
  %748 = load i64, ptr %15, align 8, !tbaa !14
  %749 = xor i64 %747, %748
  %750 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 1
  %751 = load i64, ptr %750, align 8, !tbaa !15
  %752 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 0
  %753 = load i64, ptr %752, align 8, !tbaa !10
  %754 = and i64 %751, %753
  %755 = xor i64 %749, %754
  %756 = load ptr, ptr %3, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %756, i32 0, i32 0
  %758 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %757, i64 0, i64 0
  %759 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %758, i32 0, i32 1
  store i64 %755, ptr %759, align 8, !tbaa !15
  br label %760

760:                                              ; preds = %727
  br label %761

761:                                              ; preds = %760
  br label %762

762:                                              ; preds = %761
  %763 = call i64 @aead_random_generate_64()
  store i64 %763, ptr %15, align 8, !tbaa !14
  %764 = load i64, ptr %15, align 8, !tbaa !14
  %765 = load ptr, ptr %3, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %765, i32 0, i32 0
  %767 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %766, i64 0, i64 0
  %768 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %767, i32 0, i32 0
  %769 = load i64, ptr %768, align 8, !tbaa !10
  %770 = xor i64 %769, %764
  store i64 %770, ptr %768, align 8, !tbaa !10
  %771 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 2
  %772 = load i64, ptr %771, align 8, !tbaa !16
  %773 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 0
  %774 = load i64, ptr %773, align 8, !tbaa !10
  %775 = and i64 %772, %774
  %776 = load i64, ptr %15, align 8, !tbaa !14
  %777 = xor i64 %776, %775
  store i64 %777, ptr %15, align 8, !tbaa !14
  %778 = load ptr, ptr %3, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %778, i32 0, i32 0
  %780 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %779, i64 0, i64 0
  %781 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %780, i32 0, i32 2
  %782 = load i64, ptr %781, align 8, !tbaa !16
  %783 = load i64, ptr %15, align 8, !tbaa !14
  %784 = xor i64 %782, %783
  %785 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 2
  %786 = load i64, ptr %785, align 8, !tbaa !16
  %787 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 0
  %788 = load i64, ptr %787, align 8, !tbaa !10
  %789 = and i64 %786, %788
  %790 = xor i64 %784, %789
  %791 = load ptr, ptr %3, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %791, i32 0, i32 0
  %793 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %792, i64 0, i64 0
  %794 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %793, i32 0, i32 2
  store i64 %790, ptr %794, align 8, !tbaa !16
  br label %795

795:                                              ; preds = %762
  br label %796

796:                                              ; preds = %795
  br label %797

797:                                              ; preds = %796
  %798 = call i64 @aead_random_generate_64()
  store i64 %798, ptr %15, align 8, !tbaa !14
  %799 = load i64, ptr %15, align 8, !tbaa !14
  %800 = load ptr, ptr %3, align 8, !tbaa !5
  %801 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %800, i32 0, i32 0
  %802 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %801, i64 0, i64 0
  %803 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %802, i32 0, i32 0
  %804 = load i64, ptr %803, align 8, !tbaa !10
  %805 = xor i64 %804, %799
  store i64 %805, ptr %803, align 8, !tbaa !10
  %806 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 3
  %807 = load i64, ptr %806, align 8, !tbaa !17
  %808 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 0
  %809 = load i64, ptr %808, align 8, !tbaa !10
  %810 = and i64 %807, %809
  %811 = load i64, ptr %15, align 8, !tbaa !14
  %812 = xor i64 %811, %810
  store i64 %812, ptr %15, align 8, !tbaa !14
  %813 = load ptr, ptr %3, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %813, i32 0, i32 0
  %815 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %814, i64 0, i64 0
  %816 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %815, i32 0, i32 3
  %817 = load i64, ptr %816, align 8, !tbaa !17
  %818 = load i64, ptr %15, align 8, !tbaa !14
  %819 = xor i64 %817, %818
  %820 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 3
  %821 = load i64, ptr %820, align 8, !tbaa !17
  %822 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 0
  %823 = load i64, ptr %822, align 8, !tbaa !10
  %824 = and i64 %821, %823
  %825 = xor i64 %819, %824
  %826 = load ptr, ptr %3, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %826, i32 0, i32 0
  %828 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %827, i64 0, i64 0
  %829 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %828, i32 0, i32 3
  store i64 %825, ptr %829, align 8, !tbaa !17
  br label %830

830:                                              ; preds = %797
  br label %831

831:                                              ; preds = %830
  %832 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 1
  %833 = load i64, ptr %832, align 8, !tbaa !15
  %834 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 1
  %835 = load i64, ptr %834, align 8, !tbaa !15
  %836 = and i64 %833, %835
  %837 = load ptr, ptr %3, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %837, i32 0, i32 0
  %839 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %838, i64 0, i64 0
  %840 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %839, i32 0, i32 1
  %841 = load i64, ptr %840, align 8, !tbaa !15
  %842 = xor i64 %841, %836
  store i64 %842, ptr %840, align 8, !tbaa !15
  br label %843

843:                                              ; preds = %831
  %844 = call i64 @aead_random_generate_64()
  store i64 %844, ptr %15, align 8, !tbaa !14
  %845 = load i64, ptr %15, align 8, !tbaa !14
  %846 = load ptr, ptr %3, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %846, i32 0, i32 0
  %848 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %847, i64 0, i64 0
  %849 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %848, i32 0, i32 1
  %850 = load i64, ptr %849, align 8, !tbaa !15
  %851 = xor i64 %850, %845
  store i64 %851, ptr %849, align 8, !tbaa !15
  %852 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 2
  %853 = load i64, ptr %852, align 8, !tbaa !16
  %854 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 1
  %855 = load i64, ptr %854, align 8, !tbaa !15
  %856 = and i64 %853, %855
  %857 = load i64, ptr %15, align 8, !tbaa !14
  %858 = xor i64 %857, %856
  store i64 %858, ptr %15, align 8, !tbaa !14
  %859 = load ptr, ptr %3, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %859, i32 0, i32 0
  %861 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %860, i64 0, i64 0
  %862 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %861, i32 0, i32 2
  %863 = load i64, ptr %862, align 8, !tbaa !16
  %864 = load i64, ptr %15, align 8, !tbaa !14
  %865 = xor i64 %863, %864
  %866 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 2
  %867 = load i64, ptr %866, align 8, !tbaa !16
  %868 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 1
  %869 = load i64, ptr %868, align 8, !tbaa !15
  %870 = and i64 %867, %869
  %871 = xor i64 %865, %870
  %872 = load ptr, ptr %3, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %872, i32 0, i32 0
  %874 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %873, i64 0, i64 0
  %875 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %874, i32 0, i32 2
  store i64 %871, ptr %875, align 8, !tbaa !16
  br label %876

876:                                              ; preds = %843
  br label %877

877:                                              ; preds = %876
  br label %878

878:                                              ; preds = %877
  %879 = call i64 @aead_random_generate_64()
  store i64 %879, ptr %15, align 8, !tbaa !14
  %880 = load i64, ptr %15, align 8, !tbaa !14
  %881 = load ptr, ptr %3, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %881, i32 0, i32 0
  %883 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %882, i64 0, i64 0
  %884 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %883, i32 0, i32 1
  %885 = load i64, ptr %884, align 8, !tbaa !15
  %886 = xor i64 %885, %880
  store i64 %886, ptr %884, align 8, !tbaa !15
  %887 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 3
  %888 = load i64, ptr %887, align 8, !tbaa !17
  %889 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 1
  %890 = load i64, ptr %889, align 8, !tbaa !15
  %891 = and i64 %888, %890
  %892 = load i64, ptr %15, align 8, !tbaa !14
  %893 = xor i64 %892, %891
  store i64 %893, ptr %15, align 8, !tbaa !14
  %894 = load ptr, ptr %3, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %894, i32 0, i32 0
  %896 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %895, i64 0, i64 0
  %897 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %896, i32 0, i32 3
  %898 = load i64, ptr %897, align 8, !tbaa !17
  %899 = load i64, ptr %15, align 8, !tbaa !14
  %900 = xor i64 %898, %899
  %901 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 3
  %902 = load i64, ptr %901, align 8, !tbaa !17
  %903 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 1
  %904 = load i64, ptr %903, align 8, !tbaa !15
  %905 = and i64 %902, %904
  %906 = xor i64 %900, %905
  %907 = load ptr, ptr %3, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %907, i32 0, i32 0
  %909 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %908, i64 0, i64 0
  %910 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %909, i32 0, i32 3
  store i64 %906, ptr %910, align 8, !tbaa !17
  br label %911

911:                                              ; preds = %878
  br label %912

912:                                              ; preds = %911
  %913 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 2
  %914 = load i64, ptr %913, align 8, !tbaa !16
  %915 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 2
  %916 = load i64, ptr %915, align 8, !tbaa !16
  %917 = and i64 %914, %916
  %918 = load ptr, ptr %3, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %918, i32 0, i32 0
  %920 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %919, i64 0, i64 0
  %921 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %920, i32 0, i32 2
  %922 = load i64, ptr %921, align 8, !tbaa !16
  %923 = xor i64 %922, %917
  store i64 %923, ptr %921, align 8, !tbaa !16
  br label %924

924:                                              ; preds = %912
  %925 = call i64 @aead_random_generate_64()
  store i64 %925, ptr %15, align 8, !tbaa !14
  %926 = load i64, ptr %15, align 8, !tbaa !14
  %927 = load ptr, ptr %3, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %927, i32 0, i32 0
  %929 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %928, i64 0, i64 0
  %930 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %929, i32 0, i32 2
  %931 = load i64, ptr %930, align 8, !tbaa !16
  %932 = xor i64 %931, %926
  store i64 %932, ptr %930, align 8, !tbaa !16
  %933 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 3
  %934 = load i64, ptr %933, align 8, !tbaa !17
  %935 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 2
  %936 = load i64, ptr %935, align 8, !tbaa !16
  %937 = and i64 %934, %936
  %938 = load i64, ptr %15, align 8, !tbaa !14
  %939 = xor i64 %938, %937
  store i64 %939, ptr %15, align 8, !tbaa !14
  %940 = load ptr, ptr %3, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %940, i32 0, i32 0
  %942 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %941, i64 0, i64 0
  %943 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %942, i32 0, i32 3
  %944 = load i64, ptr %943, align 8, !tbaa !17
  %945 = load i64, ptr %15, align 8, !tbaa !14
  %946 = xor i64 %944, %945
  %947 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 3
  %948 = load i64, ptr %947, align 8, !tbaa !17
  %949 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 2
  %950 = load i64, ptr %949, align 8, !tbaa !16
  %951 = and i64 %948, %950
  %952 = xor i64 %946, %951
  %953 = load ptr, ptr %3, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %953, i32 0, i32 0
  %955 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %954, i64 0, i64 0
  %956 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %955, i32 0, i32 3
  store i64 %952, ptr %956, align 8, !tbaa !17
  br label %957

957:                                              ; preds = %924
  br label %958

958:                                              ; preds = %957
  %959 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %13, i32 0, i32 3
  %960 = load i64, ptr %959, align 8, !tbaa !17
  %961 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %14, i32 0, i32 3
  %962 = load i64, ptr %961, align 8, !tbaa !17
  %963 = and i64 %960, %962
  %964 = load ptr, ptr %3, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %964, i32 0, i32 0
  %966 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %965, i64 0, i64 0
  %967 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %966, i32 0, i32 3
  %968 = load i64, ptr %967, align 8, !tbaa !17
  %969 = xor i64 %968, %963
  store i64 %969, ptr %967, align 8, !tbaa !17
  br label %970

970:                                              ; preds = %958
  br label %971

971:                                              ; preds = %970
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %6, ptr align 8 %13, i64 32, i1 false), !tbaa.struct !13
  br label %972

972:                                              ; preds = %971
  %973 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 0
  %974 = load i64, ptr %973, align 8, !tbaa !10
  %975 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 0
  %976 = load i64, ptr %975, align 8, !tbaa !10
  %977 = and i64 %974, %976
  %978 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 0
  %979 = load i64, ptr %978, align 8, !tbaa !10
  %980 = xor i64 %979, %977
  store i64 %980, ptr %978, align 8, !tbaa !10
  br label %981

981:                                              ; preds = %972
  %982 = call i64 @aead_random_generate_64()
  store i64 %982, ptr %15, align 8, !tbaa !14
  %983 = load i64, ptr %15, align 8, !tbaa !14
  %984 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 0
  %985 = load i64, ptr %984, align 8, !tbaa !10
  %986 = xor i64 %985, %983
  store i64 %986, ptr %984, align 8, !tbaa !10
  %987 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 1
  %988 = load i64, ptr %987, align 8, !tbaa !15
  %989 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 0
  %990 = load i64, ptr %989, align 8, !tbaa !10
  %991 = and i64 %988, %990
  %992 = load i64, ptr %15, align 8, !tbaa !14
  %993 = xor i64 %992, %991
  store i64 %993, ptr %15, align 8, !tbaa !14
  %994 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 1
  %995 = load i64, ptr %994, align 8, !tbaa !15
  %996 = load i64, ptr %15, align 8, !tbaa !14
  %997 = xor i64 %995, %996
  %998 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 1
  %999 = load i64, ptr %998, align 8, !tbaa !15
  %1000 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 0
  %1001 = load i64, ptr %1000, align 8, !tbaa !10
  %1002 = and i64 %999, %1001
  %1003 = xor i64 %997, %1002
  %1004 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 1
  store i64 %1003, ptr %1004, align 8, !tbaa !15
  br label %1005

1005:                                             ; preds = %981
  br label %1006

1006:                                             ; preds = %1005
  br label %1007

1007:                                             ; preds = %1006
  %1008 = call i64 @aead_random_generate_64()
  store i64 %1008, ptr %15, align 8, !tbaa !14
  %1009 = load i64, ptr %15, align 8, !tbaa !14
  %1010 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 0
  %1011 = load i64, ptr %1010, align 8, !tbaa !10
  %1012 = xor i64 %1011, %1009
  store i64 %1012, ptr %1010, align 8, !tbaa !10
  %1013 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 2
  %1014 = load i64, ptr %1013, align 8, !tbaa !16
  %1015 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 0
  %1016 = load i64, ptr %1015, align 8, !tbaa !10
  %1017 = and i64 %1014, %1016
  %1018 = load i64, ptr %15, align 8, !tbaa !14
  %1019 = xor i64 %1018, %1017
  store i64 %1019, ptr %15, align 8, !tbaa !14
  %1020 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 2
  %1021 = load i64, ptr %1020, align 8, !tbaa !16
  %1022 = load i64, ptr %15, align 8, !tbaa !14
  %1023 = xor i64 %1021, %1022
  %1024 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 2
  %1025 = load i64, ptr %1024, align 8, !tbaa !16
  %1026 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 0
  %1027 = load i64, ptr %1026, align 8, !tbaa !10
  %1028 = and i64 %1025, %1027
  %1029 = xor i64 %1023, %1028
  %1030 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 2
  store i64 %1029, ptr %1030, align 8, !tbaa !16
  br label %1031

1031:                                             ; preds = %1007
  br label %1032

1032:                                             ; preds = %1031
  br label %1033

1033:                                             ; preds = %1032
  %1034 = call i64 @aead_random_generate_64()
  store i64 %1034, ptr %15, align 8, !tbaa !14
  %1035 = load i64, ptr %15, align 8, !tbaa !14
  %1036 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 0
  %1037 = load i64, ptr %1036, align 8, !tbaa !10
  %1038 = xor i64 %1037, %1035
  store i64 %1038, ptr %1036, align 8, !tbaa !10
  %1039 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 3
  %1040 = load i64, ptr %1039, align 8, !tbaa !17
  %1041 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 0
  %1042 = load i64, ptr %1041, align 8, !tbaa !10
  %1043 = and i64 %1040, %1042
  %1044 = load i64, ptr %15, align 8, !tbaa !14
  %1045 = xor i64 %1044, %1043
  store i64 %1045, ptr %15, align 8, !tbaa !14
  %1046 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 3
  %1047 = load i64, ptr %1046, align 8, !tbaa !17
  %1048 = load i64, ptr %15, align 8, !tbaa !14
  %1049 = xor i64 %1047, %1048
  %1050 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 3
  %1051 = load i64, ptr %1050, align 8, !tbaa !17
  %1052 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 0
  %1053 = load i64, ptr %1052, align 8, !tbaa !10
  %1054 = and i64 %1051, %1053
  %1055 = xor i64 %1049, %1054
  %1056 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 3
  store i64 %1055, ptr %1056, align 8, !tbaa !17
  br label %1057

1057:                                             ; preds = %1033
  br label %1058

1058:                                             ; preds = %1057
  %1059 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 1
  %1060 = load i64, ptr %1059, align 8, !tbaa !15
  %1061 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 1
  %1062 = load i64, ptr %1061, align 8, !tbaa !15
  %1063 = and i64 %1060, %1062
  %1064 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 1
  %1065 = load i64, ptr %1064, align 8, !tbaa !15
  %1066 = xor i64 %1065, %1063
  store i64 %1066, ptr %1064, align 8, !tbaa !15
  br label %1067

1067:                                             ; preds = %1058
  %1068 = call i64 @aead_random_generate_64()
  store i64 %1068, ptr %15, align 8, !tbaa !14
  %1069 = load i64, ptr %15, align 8, !tbaa !14
  %1070 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 1
  %1071 = load i64, ptr %1070, align 8, !tbaa !15
  %1072 = xor i64 %1071, %1069
  store i64 %1072, ptr %1070, align 8, !tbaa !15
  %1073 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 2
  %1074 = load i64, ptr %1073, align 8, !tbaa !16
  %1075 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 1
  %1076 = load i64, ptr %1075, align 8, !tbaa !15
  %1077 = and i64 %1074, %1076
  %1078 = load i64, ptr %15, align 8, !tbaa !14
  %1079 = xor i64 %1078, %1077
  store i64 %1079, ptr %15, align 8, !tbaa !14
  %1080 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 2
  %1081 = load i64, ptr %1080, align 8, !tbaa !16
  %1082 = load i64, ptr %15, align 8, !tbaa !14
  %1083 = xor i64 %1081, %1082
  %1084 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 2
  %1085 = load i64, ptr %1084, align 8, !tbaa !16
  %1086 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 1
  %1087 = load i64, ptr %1086, align 8, !tbaa !15
  %1088 = and i64 %1085, %1087
  %1089 = xor i64 %1083, %1088
  %1090 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 2
  store i64 %1089, ptr %1090, align 8, !tbaa !16
  br label %1091

1091:                                             ; preds = %1067
  br label %1092

1092:                                             ; preds = %1091
  br label %1093

1093:                                             ; preds = %1092
  %1094 = call i64 @aead_random_generate_64()
  store i64 %1094, ptr %15, align 8, !tbaa !14
  %1095 = load i64, ptr %15, align 8, !tbaa !14
  %1096 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 1
  %1097 = load i64, ptr %1096, align 8, !tbaa !15
  %1098 = xor i64 %1097, %1095
  store i64 %1098, ptr %1096, align 8, !tbaa !15
  %1099 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 3
  %1100 = load i64, ptr %1099, align 8, !tbaa !17
  %1101 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 1
  %1102 = load i64, ptr %1101, align 8, !tbaa !15
  %1103 = and i64 %1100, %1102
  %1104 = load i64, ptr %15, align 8, !tbaa !14
  %1105 = xor i64 %1104, %1103
  store i64 %1105, ptr %15, align 8, !tbaa !14
  %1106 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 3
  %1107 = load i64, ptr %1106, align 8, !tbaa !17
  %1108 = load i64, ptr %15, align 8, !tbaa !14
  %1109 = xor i64 %1107, %1108
  %1110 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 3
  %1111 = load i64, ptr %1110, align 8, !tbaa !17
  %1112 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 1
  %1113 = load i64, ptr %1112, align 8, !tbaa !15
  %1114 = and i64 %1111, %1113
  %1115 = xor i64 %1109, %1114
  %1116 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 3
  store i64 %1115, ptr %1116, align 8, !tbaa !17
  br label %1117

1117:                                             ; preds = %1093
  br label %1118

1118:                                             ; preds = %1117
  %1119 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 2
  %1120 = load i64, ptr %1119, align 8, !tbaa !16
  %1121 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 2
  %1122 = load i64, ptr %1121, align 8, !tbaa !16
  %1123 = and i64 %1120, %1122
  %1124 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 2
  %1125 = load i64, ptr %1124, align 8, !tbaa !16
  %1126 = xor i64 %1125, %1123
  store i64 %1126, ptr %1124, align 8, !tbaa !16
  br label %1127

1127:                                             ; preds = %1118
  %1128 = call i64 @aead_random_generate_64()
  store i64 %1128, ptr %15, align 8, !tbaa !14
  %1129 = load i64, ptr %15, align 8, !tbaa !14
  %1130 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 2
  %1131 = load i64, ptr %1130, align 8, !tbaa !16
  %1132 = xor i64 %1131, %1129
  store i64 %1132, ptr %1130, align 8, !tbaa !16
  %1133 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 3
  %1134 = load i64, ptr %1133, align 8, !tbaa !17
  %1135 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 2
  %1136 = load i64, ptr %1135, align 8, !tbaa !16
  %1137 = and i64 %1134, %1136
  %1138 = load i64, ptr %15, align 8, !tbaa !14
  %1139 = xor i64 %1138, %1137
  store i64 %1139, ptr %15, align 8, !tbaa !14
  %1140 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 3
  %1141 = load i64, ptr %1140, align 8, !tbaa !17
  %1142 = load i64, ptr %15, align 8, !tbaa !14
  %1143 = xor i64 %1141, %1142
  %1144 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 3
  %1145 = load i64, ptr %1144, align 8, !tbaa !17
  %1146 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 2
  %1147 = load i64, ptr %1146, align 8, !tbaa !16
  %1148 = and i64 %1145, %1147
  %1149 = xor i64 %1143, %1148
  %1150 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 3
  store i64 %1149, ptr %1150, align 8, !tbaa !17
  br label %1151

1151:                                             ; preds = %1127
  br label %1152

1152:                                             ; preds = %1151
  %1153 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 3
  %1154 = load i64, ptr %1153, align 8, !tbaa !17
  %1155 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %12, i32 0, i32 3
  %1156 = load i64, ptr %1155, align 8, !tbaa !17
  %1157 = and i64 %1154, %1156
  %1158 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 3
  %1159 = load i64, ptr %1158, align 8, !tbaa !17
  %1160 = xor i64 %1159, %1157
  store i64 %1160, ptr %1158, align 8, !tbaa !17
  br label %1161

1161:                                             ; preds = %1152
  br label %1162

1162:                                             ; preds = %1161
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #4
  br label %1163

1163:                                             ; preds = %1162
  br label %1164

1164:                                             ; preds = %1163
  br label %1165

1165:                                             ; preds = %1164
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  %1166 = load ptr, ptr %3, align 8, !tbaa !5
  %1167 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1166, i32 0, i32 1
  %1168 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1167, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %16, ptr align 8 %1168, i64 16, i1 false), !tbaa.struct !18
  br label %1169

1169:                                             ; preds = %1165
  %1170 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 0
  %1171 = load i32, ptr %1170, align 4, !tbaa !21
  %1172 = xor i32 %1171, -1
  %1173 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 0
  store i32 %1172, ptr %1173, align 4, !tbaa !21
  br label %1174

1174:                                             ; preds = %1169
  br label %1175

1175:                                             ; preds = %1174
  %1176 = load ptr, ptr %3, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1176, i32 0, i32 1
  %1178 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1177, i64 0, i64 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 8 %1178, i64 16, i1 false), !tbaa.struct !18
  br label %1179

1179:                                             ; preds = %1175
  %1180 = load ptr, ptr %3, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1180, i32 0, i32 1
  %1182 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1181, i64 0, i64 1
  %1183 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1182, i32 0, i32 0
  %1184 = load i32, ptr %1183, align 8, !tbaa !21
  %1185 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 0
  %1186 = load i32, ptr %1185, align 4, !tbaa !21
  %1187 = and i32 %1184, %1186
  %1188 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 0
  %1189 = load i32, ptr %1188, align 4, !tbaa !21
  %1190 = xor i32 %1189, %1187
  store i32 %1190, ptr %1188, align 4, !tbaa !21
  br label %1191

1191:                                             ; preds = %1179
  %1192 = call i32 @aead_random_generate_32()
  store i32 %1192, ptr %19, align 4, !tbaa !19
  %1193 = load i32, ptr %19, align 4, !tbaa !19
  %1194 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 0
  %1195 = load i32, ptr %1194, align 4, !tbaa !21
  %1196 = xor i32 %1195, %1193
  store i32 %1196, ptr %1194, align 4, !tbaa !21
  %1197 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 1
  %1198 = load i32, ptr %1197, align 4, !tbaa !23
  %1199 = load ptr, ptr %3, align 8, !tbaa !5
  %1200 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1199, i32 0, i32 1
  %1201 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1200, i64 0, i64 1
  %1202 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1201, i32 0, i32 0
  %1203 = load i32, ptr %1202, align 8, !tbaa !21
  %1204 = and i32 %1198, %1203
  %1205 = load i32, ptr %19, align 4, !tbaa !19
  %1206 = xor i32 %1205, %1204
  store i32 %1206, ptr %19, align 4, !tbaa !19
  %1207 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 1
  %1208 = load i32, ptr %1207, align 4, !tbaa !23
  %1209 = load i32, ptr %19, align 4, !tbaa !19
  %1210 = xor i32 %1208, %1209
  %1211 = load ptr, ptr %3, align 8, !tbaa !5
  %1212 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1211, i32 0, i32 1
  %1213 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1212, i64 0, i64 1
  %1214 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1213, i32 0, i32 1
  %1215 = load i32, ptr %1214, align 4, !tbaa !23
  %1216 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 0
  %1217 = load i32, ptr %1216, align 4, !tbaa !21
  %1218 = and i32 %1215, %1217
  %1219 = xor i32 %1210, %1218
  %1220 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 1
  store i32 %1219, ptr %1220, align 4, !tbaa !23
  br label %1221

1221:                                             ; preds = %1191
  br label %1222

1222:                                             ; preds = %1221
  br label %1223

1223:                                             ; preds = %1222
  %1224 = call i32 @aead_random_generate_32()
  store i32 %1224, ptr %19, align 4, !tbaa !19
  %1225 = load i32, ptr %19, align 4, !tbaa !19
  %1226 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 0
  %1227 = load i32, ptr %1226, align 4, !tbaa !21
  %1228 = xor i32 %1227, %1225
  store i32 %1228, ptr %1226, align 4, !tbaa !21
  %1229 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 2
  %1230 = load i32, ptr %1229, align 4, !tbaa !24
  %1231 = load ptr, ptr %3, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1231, i32 0, i32 1
  %1233 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1232, i64 0, i64 1
  %1234 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1233, i32 0, i32 0
  %1235 = load i32, ptr %1234, align 8, !tbaa !21
  %1236 = and i32 %1230, %1235
  %1237 = load i32, ptr %19, align 4, !tbaa !19
  %1238 = xor i32 %1237, %1236
  store i32 %1238, ptr %19, align 4, !tbaa !19
  %1239 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 2
  %1240 = load i32, ptr %1239, align 4, !tbaa !24
  %1241 = load i32, ptr %19, align 4, !tbaa !19
  %1242 = xor i32 %1240, %1241
  %1243 = load ptr, ptr %3, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1243, i32 0, i32 1
  %1245 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1244, i64 0, i64 1
  %1246 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1245, i32 0, i32 2
  %1247 = load i32, ptr %1246, align 8, !tbaa !24
  %1248 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 0
  %1249 = load i32, ptr %1248, align 4, !tbaa !21
  %1250 = and i32 %1247, %1249
  %1251 = xor i32 %1242, %1250
  %1252 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 2
  store i32 %1251, ptr %1252, align 4, !tbaa !24
  br label %1253

1253:                                             ; preds = %1223
  br label %1254

1254:                                             ; preds = %1253
  br label %1255

1255:                                             ; preds = %1254
  %1256 = call i32 @aead_random_generate_32()
  store i32 %1256, ptr %19, align 4, !tbaa !19
  %1257 = load i32, ptr %19, align 4, !tbaa !19
  %1258 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 0
  %1259 = load i32, ptr %1258, align 4, !tbaa !21
  %1260 = xor i32 %1259, %1257
  store i32 %1260, ptr %1258, align 4, !tbaa !21
  %1261 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 3
  %1262 = load i32, ptr %1261, align 4, !tbaa !25
  %1263 = load ptr, ptr %3, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1263, i32 0, i32 1
  %1265 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1264, i64 0, i64 1
  %1266 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1265, i32 0, i32 0
  %1267 = load i32, ptr %1266, align 8, !tbaa !21
  %1268 = and i32 %1262, %1267
  %1269 = load i32, ptr %19, align 4, !tbaa !19
  %1270 = xor i32 %1269, %1268
  store i32 %1270, ptr %19, align 4, !tbaa !19
  %1271 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 3
  %1272 = load i32, ptr %1271, align 4, !tbaa !25
  %1273 = load i32, ptr %19, align 4, !tbaa !19
  %1274 = xor i32 %1272, %1273
  %1275 = load ptr, ptr %3, align 8, !tbaa !5
  %1276 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1275, i32 0, i32 1
  %1277 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1276, i64 0, i64 1
  %1278 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1277, i32 0, i32 3
  %1279 = load i32, ptr %1278, align 4, !tbaa !25
  %1280 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 0
  %1281 = load i32, ptr %1280, align 4, !tbaa !21
  %1282 = and i32 %1279, %1281
  %1283 = xor i32 %1274, %1282
  %1284 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 3
  store i32 %1283, ptr %1284, align 4, !tbaa !25
  br label %1285

1285:                                             ; preds = %1255
  br label %1286

1286:                                             ; preds = %1285
  %1287 = load ptr, ptr %3, align 8, !tbaa !5
  %1288 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1287, i32 0, i32 1
  %1289 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1288, i64 0, i64 1
  %1290 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1289, i32 0, i32 1
  %1291 = load i32, ptr %1290, align 4, !tbaa !23
  %1292 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 1
  %1293 = load i32, ptr %1292, align 4, !tbaa !23
  %1294 = and i32 %1291, %1293
  %1295 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 1
  %1296 = load i32, ptr %1295, align 4, !tbaa !23
  %1297 = xor i32 %1296, %1294
  store i32 %1297, ptr %1295, align 4, !tbaa !23
  br label %1298

1298:                                             ; preds = %1286
  %1299 = call i32 @aead_random_generate_32()
  store i32 %1299, ptr %19, align 4, !tbaa !19
  %1300 = load i32, ptr %19, align 4, !tbaa !19
  %1301 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 1
  %1302 = load i32, ptr %1301, align 4, !tbaa !23
  %1303 = xor i32 %1302, %1300
  store i32 %1303, ptr %1301, align 4, !tbaa !23
  %1304 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 2
  %1305 = load i32, ptr %1304, align 4, !tbaa !24
  %1306 = load ptr, ptr %3, align 8, !tbaa !5
  %1307 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1306, i32 0, i32 1
  %1308 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1307, i64 0, i64 1
  %1309 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1308, i32 0, i32 1
  %1310 = load i32, ptr %1309, align 4, !tbaa !23
  %1311 = and i32 %1305, %1310
  %1312 = load i32, ptr %19, align 4, !tbaa !19
  %1313 = xor i32 %1312, %1311
  store i32 %1313, ptr %19, align 4, !tbaa !19
  %1314 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 2
  %1315 = load i32, ptr %1314, align 4, !tbaa !24
  %1316 = load i32, ptr %19, align 4, !tbaa !19
  %1317 = xor i32 %1315, %1316
  %1318 = load ptr, ptr %3, align 8, !tbaa !5
  %1319 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1318, i32 0, i32 1
  %1320 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1319, i64 0, i64 1
  %1321 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1320, i32 0, i32 2
  %1322 = load i32, ptr %1321, align 8, !tbaa !24
  %1323 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 1
  %1324 = load i32, ptr %1323, align 4, !tbaa !23
  %1325 = and i32 %1322, %1324
  %1326 = xor i32 %1317, %1325
  %1327 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 2
  store i32 %1326, ptr %1327, align 4, !tbaa !24
  br label %1328

1328:                                             ; preds = %1298
  br label %1329

1329:                                             ; preds = %1328
  br label %1330

1330:                                             ; preds = %1329
  %1331 = call i32 @aead_random_generate_32()
  store i32 %1331, ptr %19, align 4, !tbaa !19
  %1332 = load i32, ptr %19, align 4, !tbaa !19
  %1333 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 1
  %1334 = load i32, ptr %1333, align 4, !tbaa !23
  %1335 = xor i32 %1334, %1332
  store i32 %1335, ptr %1333, align 4, !tbaa !23
  %1336 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 3
  %1337 = load i32, ptr %1336, align 4, !tbaa !25
  %1338 = load ptr, ptr %3, align 8, !tbaa !5
  %1339 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1338, i32 0, i32 1
  %1340 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1339, i64 0, i64 1
  %1341 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1340, i32 0, i32 1
  %1342 = load i32, ptr %1341, align 4, !tbaa !23
  %1343 = and i32 %1337, %1342
  %1344 = load i32, ptr %19, align 4, !tbaa !19
  %1345 = xor i32 %1344, %1343
  store i32 %1345, ptr %19, align 4, !tbaa !19
  %1346 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 3
  %1347 = load i32, ptr %1346, align 4, !tbaa !25
  %1348 = load i32, ptr %19, align 4, !tbaa !19
  %1349 = xor i32 %1347, %1348
  %1350 = load ptr, ptr %3, align 8, !tbaa !5
  %1351 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1350, i32 0, i32 1
  %1352 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1351, i64 0, i64 1
  %1353 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1352, i32 0, i32 3
  %1354 = load i32, ptr %1353, align 4, !tbaa !25
  %1355 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 1
  %1356 = load i32, ptr %1355, align 4, !tbaa !23
  %1357 = and i32 %1354, %1356
  %1358 = xor i32 %1349, %1357
  %1359 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 3
  store i32 %1358, ptr %1359, align 4, !tbaa !25
  br label %1360

1360:                                             ; preds = %1330
  br label %1361

1361:                                             ; preds = %1360
  %1362 = load ptr, ptr %3, align 8, !tbaa !5
  %1363 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1362, i32 0, i32 1
  %1364 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1363, i64 0, i64 1
  %1365 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1364, i32 0, i32 2
  %1366 = load i32, ptr %1365, align 8, !tbaa !24
  %1367 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 2
  %1368 = load i32, ptr %1367, align 4, !tbaa !24
  %1369 = and i32 %1366, %1368
  %1370 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 2
  %1371 = load i32, ptr %1370, align 4, !tbaa !24
  %1372 = xor i32 %1371, %1369
  store i32 %1372, ptr %1370, align 4, !tbaa !24
  br label %1373

1373:                                             ; preds = %1361
  %1374 = call i32 @aead_random_generate_32()
  store i32 %1374, ptr %19, align 4, !tbaa !19
  %1375 = load i32, ptr %19, align 4, !tbaa !19
  %1376 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 2
  %1377 = load i32, ptr %1376, align 4, !tbaa !24
  %1378 = xor i32 %1377, %1375
  store i32 %1378, ptr %1376, align 4, !tbaa !24
  %1379 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 3
  %1380 = load i32, ptr %1379, align 4, !tbaa !25
  %1381 = load ptr, ptr %3, align 8, !tbaa !5
  %1382 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1381, i32 0, i32 1
  %1383 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1382, i64 0, i64 1
  %1384 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1383, i32 0, i32 2
  %1385 = load i32, ptr %1384, align 8, !tbaa !24
  %1386 = and i32 %1380, %1385
  %1387 = load i32, ptr %19, align 4, !tbaa !19
  %1388 = xor i32 %1387, %1386
  store i32 %1388, ptr %19, align 4, !tbaa !19
  %1389 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 3
  %1390 = load i32, ptr %1389, align 4, !tbaa !25
  %1391 = load i32, ptr %19, align 4, !tbaa !19
  %1392 = xor i32 %1390, %1391
  %1393 = load ptr, ptr %3, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1393, i32 0, i32 1
  %1395 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1394, i64 0, i64 1
  %1396 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1395, i32 0, i32 3
  %1397 = load i32, ptr %1396, align 4, !tbaa !25
  %1398 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 2
  %1399 = load i32, ptr %1398, align 4, !tbaa !24
  %1400 = and i32 %1397, %1399
  %1401 = xor i32 %1392, %1400
  %1402 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 3
  store i32 %1401, ptr %1402, align 4, !tbaa !25
  br label %1403

1403:                                             ; preds = %1373
  br label %1404

1404:                                             ; preds = %1403
  %1405 = load ptr, ptr %3, align 8, !tbaa !5
  %1406 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1405, i32 0, i32 1
  %1407 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1406, i64 0, i64 1
  %1408 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1407, i32 0, i32 3
  %1409 = load i32, ptr %1408, align 4, !tbaa !25
  %1410 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 3
  %1411 = load i32, ptr %1410, align 4, !tbaa !25
  %1412 = and i32 %1409, %1411
  %1413 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 3
  %1414 = load i32, ptr %1413, align 4, !tbaa !25
  %1415 = xor i32 %1414, %1412
  store i32 %1415, ptr %1413, align 4, !tbaa !25
  br label %1416

1416:                                             ; preds = %1404
  br label %1417

1417:                                             ; preds = %1416
  br label %1418

1418:                                             ; preds = %1417
  %1419 = load ptr, ptr %3, align 8, !tbaa !5
  %1420 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1419, i32 0, i32 1
  %1421 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1420, i64 0, i64 3
  %1422 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1421, i32 0, i32 0
  %1423 = load i32, ptr %1422, align 8, !tbaa !21
  %1424 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 0
  %1425 = load i32, ptr %1424, align 4, !tbaa !21
  %1426 = xor i32 %1423, %1425
  %1427 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  store i32 %1426, ptr %1427, align 4, !tbaa !21
  %1428 = load ptr, ptr %3, align 8, !tbaa !5
  %1429 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1428, i32 0, i32 1
  %1430 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1429, i64 0, i64 3
  %1431 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1430, i32 0, i32 1
  %1432 = load i32, ptr %1431, align 4, !tbaa !23
  %1433 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 1
  %1434 = load i32, ptr %1433, align 4, !tbaa !23
  %1435 = xor i32 %1432, %1434
  %1436 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  store i32 %1435, ptr %1436, align 4, !tbaa !23
  %1437 = load ptr, ptr %3, align 8, !tbaa !5
  %1438 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1437, i32 0, i32 1
  %1439 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1438, i64 0, i64 3
  %1440 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1439, i32 0, i32 2
  %1441 = load i32, ptr %1440, align 8, !tbaa !24
  %1442 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 2
  %1443 = load i32, ptr %1442, align 4, !tbaa !24
  %1444 = xor i32 %1441, %1443
  %1445 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  store i32 %1444, ptr %1445, align 4, !tbaa !24
  %1446 = load ptr, ptr %3, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1446, i32 0, i32 1
  %1448 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1447, i64 0, i64 3
  %1449 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1448, i32 0, i32 3
  %1450 = load i32, ptr %1449, align 4, !tbaa !25
  %1451 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 3
  %1452 = load i32, ptr %1451, align 4, !tbaa !25
  %1453 = xor i32 %1450, %1452
  %1454 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  store i32 %1453, ptr %1454, align 4, !tbaa !25
  br label %1455

1455:                                             ; preds = %1418
  br label %1456

1456:                                             ; preds = %1455
  br label %1457

1457:                                             ; preds = %1456
  %1458 = load ptr, ptr %3, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1458, i32 0, i32 1
  %1460 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1459, i64 0, i64 3
  %1461 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1460, i32 0, i32 0
  %1462 = load i32, ptr %1461, align 8, !tbaa !21
  %1463 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 0
  %1464 = load i32, ptr %1463, align 4, !tbaa !21
  %1465 = xor i32 %1462, %1464
  %1466 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 0
  store i32 %1465, ptr %1466, align 4, !tbaa !21
  %1467 = load ptr, ptr %3, align 8, !tbaa !5
  %1468 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1467, i32 0, i32 1
  %1469 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1468, i64 0, i64 3
  %1470 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1469, i32 0, i32 1
  %1471 = load i32, ptr %1470, align 4, !tbaa !23
  %1472 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 1
  %1473 = load i32, ptr %1472, align 4, !tbaa !23
  %1474 = xor i32 %1471, %1473
  %1475 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 1
  store i32 %1474, ptr %1475, align 4, !tbaa !23
  %1476 = load ptr, ptr %3, align 8, !tbaa !5
  %1477 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1476, i32 0, i32 1
  %1478 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1477, i64 0, i64 3
  %1479 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1478, i32 0, i32 2
  %1480 = load i32, ptr %1479, align 8, !tbaa !24
  %1481 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 2
  %1482 = load i32, ptr %1481, align 4, !tbaa !24
  %1483 = xor i32 %1480, %1482
  %1484 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 2
  store i32 %1483, ptr %1484, align 4, !tbaa !24
  %1485 = load ptr, ptr %3, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1485, i32 0, i32 1
  %1487 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1486, i64 0, i64 3
  %1488 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1487, i32 0, i32 3
  %1489 = load i32, ptr %1488, align 4, !tbaa !25
  %1490 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 3
  %1491 = load i32, ptr %1490, align 4, !tbaa !25
  %1492 = xor i32 %1489, %1491
  %1493 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 3
  store i32 %1492, ptr %1493, align 4, !tbaa !25
  br label %1494

1494:                                             ; preds = %1457
  br label %1495

1495:                                             ; preds = %1494
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %10, ptr align 4 %18, i64 16, i1 false), !tbaa.struct !18
  br label %1496

1496:                                             ; preds = %1495
  %1497 = load ptr, ptr %3, align 8, !tbaa !5
  %1498 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1497, i32 0, i32 1
  %1499 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1498, i64 0, i64 1
  %1500 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1499, i32 0, i32 0
  %1501 = load i32, ptr %1500, align 8, !tbaa !21
  %1502 = load ptr, ptr %3, align 8, !tbaa !5
  %1503 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1502, i32 0, i32 1
  %1504 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1503, i64 0, i64 2
  %1505 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1504, i32 0, i32 0
  %1506 = load i32, ptr %1505, align 8, !tbaa !21
  %1507 = or i32 %1501, %1506
  %1508 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %1509 = load i32, ptr %1508, align 4, !tbaa !21
  %1510 = xor i32 %1509, %1507
  store i32 %1510, ptr %1508, align 4, !tbaa !21
  br label %1511

1511:                                             ; preds = %1496
  %1512 = call i32 @aead_random_generate_32()
  store i32 %1512, ptr %19, align 4, !tbaa !19
  %1513 = load i32, ptr %19, align 4, !tbaa !19
  %1514 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %1515 = load i32, ptr %1514, align 4, !tbaa !21
  %1516 = xor i32 %1515, %1513
  store i32 %1516, ptr %1514, align 4, !tbaa !21
  %1517 = load ptr, ptr %3, align 8, !tbaa !5
  %1518 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1517, i32 0, i32 1
  %1519 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1518, i64 0, i64 2
  %1520 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1519, i32 0, i32 1
  %1521 = load i32, ptr %1520, align 4, !tbaa !23
  %1522 = load ptr, ptr %3, align 8, !tbaa !5
  %1523 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1522, i32 0, i32 1
  %1524 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1523, i64 0, i64 1
  %1525 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1524, i32 0, i32 0
  %1526 = load i32, ptr %1525, align 8, !tbaa !21
  %1527 = xor i32 %1526, -1
  %1528 = and i32 %1521, %1527
  %1529 = load i32, ptr %19, align 4, !tbaa !19
  %1530 = xor i32 %1529, %1528
  store i32 %1530, ptr %19, align 4, !tbaa !19
  %1531 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %1532 = load i32, ptr %1531, align 4, !tbaa !23
  %1533 = load i32, ptr %19, align 4, !tbaa !19
  %1534 = xor i32 %1532, %1533
  %1535 = load ptr, ptr %3, align 8, !tbaa !5
  %1536 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1535, i32 0, i32 1
  %1537 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1536, i64 0, i64 1
  %1538 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1537, i32 0, i32 1
  %1539 = load i32, ptr %1538, align 4, !tbaa !23
  %1540 = load ptr, ptr %3, align 8, !tbaa !5
  %1541 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1540, i32 0, i32 1
  %1542 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1541, i64 0, i64 2
  %1543 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1542, i32 0, i32 0
  %1544 = load i32, ptr %1543, align 8, !tbaa !21
  %1545 = xor i32 %1544, -1
  %1546 = and i32 %1539, %1545
  %1547 = xor i32 %1534, %1546
  %1548 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  store i32 %1547, ptr %1548, align 4, !tbaa !23
  br label %1549

1549:                                             ; preds = %1511
  br label %1550

1550:                                             ; preds = %1549
  br label %1551

1551:                                             ; preds = %1550
  %1552 = call i32 @aead_random_generate_32()
  store i32 %1552, ptr %19, align 4, !tbaa !19
  %1553 = load i32, ptr %19, align 4, !tbaa !19
  %1554 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %1555 = load i32, ptr %1554, align 4, !tbaa !21
  %1556 = xor i32 %1555, %1553
  store i32 %1556, ptr %1554, align 4, !tbaa !21
  %1557 = load ptr, ptr %3, align 8, !tbaa !5
  %1558 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1557, i32 0, i32 1
  %1559 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1558, i64 0, i64 2
  %1560 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1559, i32 0, i32 2
  %1561 = load i32, ptr %1560, align 8, !tbaa !24
  %1562 = load ptr, ptr %3, align 8, !tbaa !5
  %1563 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1562, i32 0, i32 1
  %1564 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1563, i64 0, i64 1
  %1565 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1564, i32 0, i32 0
  %1566 = load i32, ptr %1565, align 8, !tbaa !21
  %1567 = xor i32 %1566, -1
  %1568 = and i32 %1561, %1567
  %1569 = load i32, ptr %19, align 4, !tbaa !19
  %1570 = xor i32 %1569, %1568
  store i32 %1570, ptr %19, align 4, !tbaa !19
  %1571 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %1572 = load i32, ptr %1571, align 4, !tbaa !24
  %1573 = load i32, ptr %19, align 4, !tbaa !19
  %1574 = xor i32 %1572, %1573
  %1575 = load ptr, ptr %3, align 8, !tbaa !5
  %1576 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1575, i32 0, i32 1
  %1577 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1576, i64 0, i64 1
  %1578 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1577, i32 0, i32 2
  %1579 = load i32, ptr %1578, align 8, !tbaa !24
  %1580 = load ptr, ptr %3, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1580, i32 0, i32 1
  %1582 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1581, i64 0, i64 2
  %1583 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1582, i32 0, i32 0
  %1584 = load i32, ptr %1583, align 8, !tbaa !21
  %1585 = xor i32 %1584, -1
  %1586 = and i32 %1579, %1585
  %1587 = xor i32 %1574, %1586
  %1588 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  store i32 %1587, ptr %1588, align 4, !tbaa !24
  br label %1589

1589:                                             ; preds = %1551
  br label %1590

1590:                                             ; preds = %1589
  br label %1591

1591:                                             ; preds = %1590
  %1592 = call i32 @aead_random_generate_32()
  store i32 %1592, ptr %19, align 4, !tbaa !19
  %1593 = load i32, ptr %19, align 4, !tbaa !19
  %1594 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %1595 = load i32, ptr %1594, align 4, !tbaa !21
  %1596 = xor i32 %1595, %1593
  store i32 %1596, ptr %1594, align 4, !tbaa !21
  %1597 = load ptr, ptr %3, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1597, i32 0, i32 1
  %1599 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1598, i64 0, i64 2
  %1600 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1599, i32 0, i32 3
  %1601 = load i32, ptr %1600, align 4, !tbaa !25
  %1602 = load ptr, ptr %3, align 8, !tbaa !5
  %1603 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1602, i32 0, i32 1
  %1604 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1603, i64 0, i64 1
  %1605 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1604, i32 0, i32 0
  %1606 = load i32, ptr %1605, align 8, !tbaa !21
  %1607 = xor i32 %1606, -1
  %1608 = and i32 %1601, %1607
  %1609 = load i32, ptr %19, align 4, !tbaa !19
  %1610 = xor i32 %1609, %1608
  store i32 %1610, ptr %19, align 4, !tbaa !19
  %1611 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %1612 = load i32, ptr %1611, align 4, !tbaa !25
  %1613 = load i32, ptr %19, align 4, !tbaa !19
  %1614 = xor i32 %1612, %1613
  %1615 = load ptr, ptr %3, align 8, !tbaa !5
  %1616 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1615, i32 0, i32 1
  %1617 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1616, i64 0, i64 1
  %1618 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1617, i32 0, i32 3
  %1619 = load i32, ptr %1618, align 4, !tbaa !25
  %1620 = load ptr, ptr %3, align 8, !tbaa !5
  %1621 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1620, i32 0, i32 1
  %1622 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1621, i64 0, i64 2
  %1623 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1622, i32 0, i32 0
  %1624 = load i32, ptr %1623, align 8, !tbaa !21
  %1625 = xor i32 %1624, -1
  %1626 = and i32 %1619, %1625
  %1627 = xor i32 %1614, %1626
  %1628 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  store i32 %1627, ptr %1628, align 4, !tbaa !25
  br label %1629

1629:                                             ; preds = %1591
  br label %1630

1630:                                             ; preds = %1629
  %1631 = load ptr, ptr %3, align 8, !tbaa !5
  %1632 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1631, i32 0, i32 1
  %1633 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1632, i64 0, i64 1
  %1634 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1633, i32 0, i32 1
  %1635 = load i32, ptr %1634, align 4, !tbaa !23
  %1636 = load ptr, ptr %3, align 8, !tbaa !5
  %1637 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1636, i32 0, i32 1
  %1638 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1637, i64 0, i64 2
  %1639 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1638, i32 0, i32 1
  %1640 = load i32, ptr %1639, align 4, !tbaa !23
  %1641 = and i32 %1635, %1640
  %1642 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %1643 = load i32, ptr %1642, align 4, !tbaa !23
  %1644 = xor i32 %1643, %1641
  store i32 %1644, ptr %1642, align 4, !tbaa !23
  br label %1645

1645:                                             ; preds = %1630
  %1646 = call i32 @aead_random_generate_32()
  store i32 %1646, ptr %19, align 4, !tbaa !19
  %1647 = load i32, ptr %19, align 4, !tbaa !19
  %1648 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %1649 = load i32, ptr %1648, align 4, !tbaa !23
  %1650 = xor i32 %1649, %1647
  store i32 %1650, ptr %1648, align 4, !tbaa !23
  %1651 = load ptr, ptr %3, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1651, i32 0, i32 1
  %1653 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1652, i64 0, i64 2
  %1654 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1653, i32 0, i32 2
  %1655 = load i32, ptr %1654, align 8, !tbaa !24
  %1656 = load ptr, ptr %3, align 8, !tbaa !5
  %1657 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1656, i32 0, i32 1
  %1658 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1657, i64 0, i64 1
  %1659 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1658, i32 0, i32 1
  %1660 = load i32, ptr %1659, align 4, !tbaa !23
  %1661 = and i32 %1655, %1660
  %1662 = load i32, ptr %19, align 4, !tbaa !19
  %1663 = xor i32 %1662, %1661
  store i32 %1663, ptr %19, align 4, !tbaa !19
  %1664 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %1665 = load i32, ptr %1664, align 4, !tbaa !24
  %1666 = load i32, ptr %19, align 4, !tbaa !19
  %1667 = xor i32 %1665, %1666
  %1668 = load ptr, ptr %3, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1668, i32 0, i32 1
  %1670 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1669, i64 0, i64 1
  %1671 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1670, i32 0, i32 2
  %1672 = load i32, ptr %1671, align 8, !tbaa !24
  %1673 = load ptr, ptr %3, align 8, !tbaa !5
  %1674 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1673, i32 0, i32 1
  %1675 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1674, i64 0, i64 2
  %1676 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1675, i32 0, i32 1
  %1677 = load i32, ptr %1676, align 4, !tbaa !23
  %1678 = and i32 %1672, %1677
  %1679 = xor i32 %1667, %1678
  %1680 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  store i32 %1679, ptr %1680, align 4, !tbaa !24
  br label %1681

1681:                                             ; preds = %1645
  br label %1682

1682:                                             ; preds = %1681
  br label %1683

1683:                                             ; preds = %1682
  %1684 = call i32 @aead_random_generate_32()
  store i32 %1684, ptr %19, align 4, !tbaa !19
  %1685 = load i32, ptr %19, align 4, !tbaa !19
  %1686 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %1687 = load i32, ptr %1686, align 4, !tbaa !23
  %1688 = xor i32 %1687, %1685
  store i32 %1688, ptr %1686, align 4, !tbaa !23
  %1689 = load ptr, ptr %3, align 8, !tbaa !5
  %1690 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1689, i32 0, i32 1
  %1691 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1690, i64 0, i64 2
  %1692 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1691, i32 0, i32 3
  %1693 = load i32, ptr %1692, align 4, !tbaa !25
  %1694 = load ptr, ptr %3, align 8, !tbaa !5
  %1695 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1694, i32 0, i32 1
  %1696 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1695, i64 0, i64 1
  %1697 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1696, i32 0, i32 1
  %1698 = load i32, ptr %1697, align 4, !tbaa !23
  %1699 = and i32 %1693, %1698
  %1700 = load i32, ptr %19, align 4, !tbaa !19
  %1701 = xor i32 %1700, %1699
  store i32 %1701, ptr %19, align 4, !tbaa !19
  %1702 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %1703 = load i32, ptr %1702, align 4, !tbaa !25
  %1704 = load i32, ptr %19, align 4, !tbaa !19
  %1705 = xor i32 %1703, %1704
  %1706 = load ptr, ptr %3, align 8, !tbaa !5
  %1707 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1706, i32 0, i32 1
  %1708 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1707, i64 0, i64 1
  %1709 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1708, i32 0, i32 3
  %1710 = load i32, ptr %1709, align 4, !tbaa !25
  %1711 = load ptr, ptr %3, align 8, !tbaa !5
  %1712 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1711, i32 0, i32 1
  %1713 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1712, i64 0, i64 2
  %1714 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1713, i32 0, i32 1
  %1715 = load i32, ptr %1714, align 4, !tbaa !23
  %1716 = and i32 %1710, %1715
  %1717 = xor i32 %1705, %1716
  %1718 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  store i32 %1717, ptr %1718, align 4, !tbaa !25
  br label %1719

1719:                                             ; preds = %1683
  br label %1720

1720:                                             ; preds = %1719
  %1721 = load ptr, ptr %3, align 8, !tbaa !5
  %1722 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1721, i32 0, i32 1
  %1723 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1722, i64 0, i64 1
  %1724 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1723, i32 0, i32 2
  %1725 = load i32, ptr %1724, align 8, !tbaa !24
  %1726 = load ptr, ptr %3, align 8, !tbaa !5
  %1727 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1726, i32 0, i32 1
  %1728 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1727, i64 0, i64 2
  %1729 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1728, i32 0, i32 2
  %1730 = load i32, ptr %1729, align 8, !tbaa !24
  %1731 = and i32 %1725, %1730
  %1732 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %1733 = load i32, ptr %1732, align 4, !tbaa !24
  %1734 = xor i32 %1733, %1731
  store i32 %1734, ptr %1732, align 4, !tbaa !24
  br label %1735

1735:                                             ; preds = %1720
  %1736 = call i32 @aead_random_generate_32()
  store i32 %1736, ptr %19, align 4, !tbaa !19
  %1737 = load i32, ptr %19, align 4, !tbaa !19
  %1738 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %1739 = load i32, ptr %1738, align 4, !tbaa !24
  %1740 = xor i32 %1739, %1737
  store i32 %1740, ptr %1738, align 4, !tbaa !24
  %1741 = load ptr, ptr %3, align 8, !tbaa !5
  %1742 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1741, i32 0, i32 1
  %1743 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1742, i64 0, i64 2
  %1744 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1743, i32 0, i32 3
  %1745 = load i32, ptr %1744, align 4, !tbaa !25
  %1746 = load ptr, ptr %3, align 8, !tbaa !5
  %1747 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1746, i32 0, i32 1
  %1748 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1747, i64 0, i64 1
  %1749 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1748, i32 0, i32 2
  %1750 = load i32, ptr %1749, align 8, !tbaa !24
  %1751 = and i32 %1745, %1750
  %1752 = load i32, ptr %19, align 4, !tbaa !19
  %1753 = xor i32 %1752, %1751
  store i32 %1753, ptr %19, align 4, !tbaa !19
  %1754 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %1755 = load i32, ptr %1754, align 4, !tbaa !25
  %1756 = load i32, ptr %19, align 4, !tbaa !19
  %1757 = xor i32 %1755, %1756
  %1758 = load ptr, ptr %3, align 8, !tbaa !5
  %1759 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1758, i32 0, i32 1
  %1760 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1759, i64 0, i64 1
  %1761 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1760, i32 0, i32 3
  %1762 = load i32, ptr %1761, align 4, !tbaa !25
  %1763 = load ptr, ptr %3, align 8, !tbaa !5
  %1764 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1763, i32 0, i32 1
  %1765 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1764, i64 0, i64 2
  %1766 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1765, i32 0, i32 2
  %1767 = load i32, ptr %1766, align 8, !tbaa !24
  %1768 = and i32 %1762, %1767
  %1769 = xor i32 %1757, %1768
  %1770 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  store i32 %1769, ptr %1770, align 4, !tbaa !25
  br label %1771

1771:                                             ; preds = %1735
  br label %1772

1772:                                             ; preds = %1771
  %1773 = load ptr, ptr %3, align 8, !tbaa !5
  %1774 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1773, i32 0, i32 1
  %1775 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1774, i64 0, i64 1
  %1776 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1775, i32 0, i32 3
  %1777 = load i32, ptr %1776, align 4, !tbaa !25
  %1778 = load ptr, ptr %3, align 8, !tbaa !5
  %1779 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1778, i32 0, i32 1
  %1780 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1779, i64 0, i64 2
  %1781 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1780, i32 0, i32 3
  %1782 = load i32, ptr %1781, align 4, !tbaa !25
  %1783 = and i32 %1777, %1782
  %1784 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %1785 = load i32, ptr %1784, align 4, !tbaa !25
  %1786 = xor i32 %1785, %1783
  store i32 %1786, ptr %1784, align 4, !tbaa !25
  br label %1787

1787:                                             ; preds = %1772
  br label %1788

1788:                                             ; preds = %1787
  br label %1789

1789:                                             ; preds = %1788
  %1790 = load ptr, ptr %3, align 8, !tbaa !5
  %1791 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1790, i32 0, i32 1
  %1792 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1791, i64 0, i64 1
  %1793 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1792, i32 0, i32 0
  %1794 = load i32, ptr %1793, align 8, !tbaa !21
  %1795 = load ptr, ptr %3, align 8, !tbaa !5
  %1796 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1795, i32 0, i32 1
  %1797 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1796, i64 0, i64 3
  %1798 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1797, i32 0, i32 0
  %1799 = load i32, ptr %1798, align 8, !tbaa !21
  %1800 = xor i32 %1794, %1799
  %1801 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 0
  store i32 %1800, ptr %1801, align 4, !tbaa !21
  %1802 = load ptr, ptr %3, align 8, !tbaa !5
  %1803 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1802, i32 0, i32 1
  %1804 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1803, i64 0, i64 1
  %1805 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1804, i32 0, i32 1
  %1806 = load i32, ptr %1805, align 4, !tbaa !23
  %1807 = load ptr, ptr %3, align 8, !tbaa !5
  %1808 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1807, i32 0, i32 1
  %1809 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1808, i64 0, i64 3
  %1810 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1809, i32 0, i32 1
  %1811 = load i32, ptr %1810, align 4, !tbaa !23
  %1812 = xor i32 %1806, %1811
  %1813 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 1
  store i32 %1812, ptr %1813, align 4, !tbaa !23
  %1814 = load ptr, ptr %3, align 8, !tbaa !5
  %1815 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1814, i32 0, i32 1
  %1816 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1815, i64 0, i64 1
  %1817 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1816, i32 0, i32 2
  %1818 = load i32, ptr %1817, align 8, !tbaa !24
  %1819 = load ptr, ptr %3, align 8, !tbaa !5
  %1820 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1819, i32 0, i32 1
  %1821 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1820, i64 0, i64 3
  %1822 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1821, i32 0, i32 2
  %1823 = load i32, ptr %1822, align 8, !tbaa !24
  %1824 = xor i32 %1818, %1823
  %1825 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 2
  store i32 %1824, ptr %1825, align 4, !tbaa !24
  %1826 = load ptr, ptr %3, align 8, !tbaa !5
  %1827 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1826, i32 0, i32 1
  %1828 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1827, i64 0, i64 1
  %1829 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1828, i32 0, i32 3
  %1830 = load i32, ptr %1829, align 4, !tbaa !25
  %1831 = load ptr, ptr %3, align 8, !tbaa !5
  %1832 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1831, i32 0, i32 1
  %1833 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1832, i64 0, i64 3
  %1834 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1833, i32 0, i32 3
  %1835 = load i32, ptr %1834, align 4, !tbaa !25
  %1836 = xor i32 %1830, %1835
  %1837 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 3
  store i32 %1836, ptr %1837, align 4, !tbaa !25
  br label %1838

1838:                                             ; preds = %1789
  br label %1839

1839:                                             ; preds = %1838
  %1840 = load ptr, ptr %3, align 8, !tbaa !5
  %1841 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1840, i32 0, i32 1
  %1842 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1841, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1842, ptr align 4 %16, i64 16, i1 false), !tbaa.struct !18
  br label %1843

1843:                                             ; preds = %1839
  %1844 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 0
  %1845 = load i32, ptr %1844, align 4, !tbaa !21
  %1846 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 0
  %1847 = load i32, ptr %1846, align 4, !tbaa !21
  %1848 = and i32 %1845, %1847
  %1849 = load ptr, ptr %3, align 8, !tbaa !5
  %1850 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1849, i32 0, i32 1
  %1851 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1850, i64 0, i64 0
  %1852 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1851, i32 0, i32 0
  %1853 = load i32, ptr %1852, align 8, !tbaa !21
  %1854 = xor i32 %1853, %1848
  store i32 %1854, ptr %1852, align 8, !tbaa !21
  br label %1855

1855:                                             ; preds = %1843
  %1856 = call i32 @aead_random_generate_32()
  store i32 %1856, ptr %19, align 4, !tbaa !19
  %1857 = load i32, ptr %19, align 4, !tbaa !19
  %1858 = load ptr, ptr %3, align 8, !tbaa !5
  %1859 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1858, i32 0, i32 1
  %1860 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1859, i64 0, i64 0
  %1861 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1860, i32 0, i32 0
  %1862 = load i32, ptr %1861, align 8, !tbaa !21
  %1863 = xor i32 %1862, %1857
  store i32 %1863, ptr %1861, align 8, !tbaa !21
  %1864 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 1
  %1865 = load i32, ptr %1864, align 4, !tbaa !23
  %1866 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 0
  %1867 = load i32, ptr %1866, align 4, !tbaa !21
  %1868 = and i32 %1865, %1867
  %1869 = load i32, ptr %19, align 4, !tbaa !19
  %1870 = xor i32 %1869, %1868
  store i32 %1870, ptr %19, align 4, !tbaa !19
  %1871 = load ptr, ptr %3, align 8, !tbaa !5
  %1872 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1871, i32 0, i32 1
  %1873 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1872, i64 0, i64 0
  %1874 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1873, i32 0, i32 1
  %1875 = load i32, ptr %1874, align 4, !tbaa !23
  %1876 = load i32, ptr %19, align 4, !tbaa !19
  %1877 = xor i32 %1875, %1876
  %1878 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 1
  %1879 = load i32, ptr %1878, align 4, !tbaa !23
  %1880 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 0
  %1881 = load i32, ptr %1880, align 4, !tbaa !21
  %1882 = and i32 %1879, %1881
  %1883 = xor i32 %1877, %1882
  %1884 = load ptr, ptr %3, align 8, !tbaa !5
  %1885 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1884, i32 0, i32 1
  %1886 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1885, i64 0, i64 0
  %1887 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1886, i32 0, i32 1
  store i32 %1883, ptr %1887, align 4, !tbaa !23
  br label %1888

1888:                                             ; preds = %1855
  br label %1889

1889:                                             ; preds = %1888
  br label %1890

1890:                                             ; preds = %1889
  %1891 = call i32 @aead_random_generate_32()
  store i32 %1891, ptr %19, align 4, !tbaa !19
  %1892 = load i32, ptr %19, align 4, !tbaa !19
  %1893 = load ptr, ptr %3, align 8, !tbaa !5
  %1894 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1893, i32 0, i32 1
  %1895 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1894, i64 0, i64 0
  %1896 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1895, i32 0, i32 0
  %1897 = load i32, ptr %1896, align 8, !tbaa !21
  %1898 = xor i32 %1897, %1892
  store i32 %1898, ptr %1896, align 8, !tbaa !21
  %1899 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 2
  %1900 = load i32, ptr %1899, align 4, !tbaa !24
  %1901 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 0
  %1902 = load i32, ptr %1901, align 4, !tbaa !21
  %1903 = and i32 %1900, %1902
  %1904 = load i32, ptr %19, align 4, !tbaa !19
  %1905 = xor i32 %1904, %1903
  store i32 %1905, ptr %19, align 4, !tbaa !19
  %1906 = load ptr, ptr %3, align 8, !tbaa !5
  %1907 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1906, i32 0, i32 1
  %1908 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1907, i64 0, i64 0
  %1909 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1908, i32 0, i32 2
  %1910 = load i32, ptr %1909, align 8, !tbaa !24
  %1911 = load i32, ptr %19, align 4, !tbaa !19
  %1912 = xor i32 %1910, %1911
  %1913 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 2
  %1914 = load i32, ptr %1913, align 4, !tbaa !24
  %1915 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 0
  %1916 = load i32, ptr %1915, align 4, !tbaa !21
  %1917 = and i32 %1914, %1916
  %1918 = xor i32 %1912, %1917
  %1919 = load ptr, ptr %3, align 8, !tbaa !5
  %1920 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1919, i32 0, i32 1
  %1921 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1920, i64 0, i64 0
  %1922 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1921, i32 0, i32 2
  store i32 %1918, ptr %1922, align 8, !tbaa !24
  br label %1923

1923:                                             ; preds = %1890
  br label %1924

1924:                                             ; preds = %1923
  br label %1925

1925:                                             ; preds = %1924
  %1926 = call i32 @aead_random_generate_32()
  store i32 %1926, ptr %19, align 4, !tbaa !19
  %1927 = load i32, ptr %19, align 4, !tbaa !19
  %1928 = load ptr, ptr %3, align 8, !tbaa !5
  %1929 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1928, i32 0, i32 1
  %1930 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1929, i64 0, i64 0
  %1931 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1930, i32 0, i32 0
  %1932 = load i32, ptr %1931, align 8, !tbaa !21
  %1933 = xor i32 %1932, %1927
  store i32 %1933, ptr %1931, align 8, !tbaa !21
  %1934 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 3
  %1935 = load i32, ptr %1934, align 4, !tbaa !25
  %1936 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 0
  %1937 = load i32, ptr %1936, align 4, !tbaa !21
  %1938 = and i32 %1935, %1937
  %1939 = load i32, ptr %19, align 4, !tbaa !19
  %1940 = xor i32 %1939, %1938
  store i32 %1940, ptr %19, align 4, !tbaa !19
  %1941 = load ptr, ptr %3, align 8, !tbaa !5
  %1942 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1941, i32 0, i32 1
  %1943 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1942, i64 0, i64 0
  %1944 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1943, i32 0, i32 3
  %1945 = load i32, ptr %1944, align 4, !tbaa !25
  %1946 = load i32, ptr %19, align 4, !tbaa !19
  %1947 = xor i32 %1945, %1946
  %1948 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 3
  %1949 = load i32, ptr %1948, align 4, !tbaa !25
  %1950 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 0
  %1951 = load i32, ptr %1950, align 4, !tbaa !21
  %1952 = and i32 %1949, %1951
  %1953 = xor i32 %1947, %1952
  %1954 = load ptr, ptr %3, align 8, !tbaa !5
  %1955 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1954, i32 0, i32 1
  %1956 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1955, i64 0, i64 0
  %1957 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1956, i32 0, i32 3
  store i32 %1953, ptr %1957, align 4, !tbaa !25
  br label %1958

1958:                                             ; preds = %1925
  br label %1959

1959:                                             ; preds = %1958
  %1960 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 1
  %1961 = load i32, ptr %1960, align 4, !tbaa !23
  %1962 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 1
  %1963 = load i32, ptr %1962, align 4, !tbaa !23
  %1964 = and i32 %1961, %1963
  %1965 = load ptr, ptr %3, align 8, !tbaa !5
  %1966 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1965, i32 0, i32 1
  %1967 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1966, i64 0, i64 0
  %1968 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1967, i32 0, i32 1
  %1969 = load i32, ptr %1968, align 4, !tbaa !23
  %1970 = xor i32 %1969, %1964
  store i32 %1970, ptr %1968, align 4, !tbaa !23
  br label %1971

1971:                                             ; preds = %1959
  %1972 = call i32 @aead_random_generate_32()
  store i32 %1972, ptr %19, align 4, !tbaa !19
  %1973 = load i32, ptr %19, align 4, !tbaa !19
  %1974 = load ptr, ptr %3, align 8, !tbaa !5
  %1975 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1974, i32 0, i32 1
  %1976 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1975, i64 0, i64 0
  %1977 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1976, i32 0, i32 1
  %1978 = load i32, ptr %1977, align 4, !tbaa !23
  %1979 = xor i32 %1978, %1973
  store i32 %1979, ptr %1977, align 4, !tbaa !23
  %1980 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 2
  %1981 = load i32, ptr %1980, align 4, !tbaa !24
  %1982 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 1
  %1983 = load i32, ptr %1982, align 4, !tbaa !23
  %1984 = and i32 %1981, %1983
  %1985 = load i32, ptr %19, align 4, !tbaa !19
  %1986 = xor i32 %1985, %1984
  store i32 %1986, ptr %19, align 4, !tbaa !19
  %1987 = load ptr, ptr %3, align 8, !tbaa !5
  %1988 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %1987, i32 0, i32 1
  %1989 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %1988, i64 0, i64 0
  %1990 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1989, i32 0, i32 2
  %1991 = load i32, ptr %1990, align 8, !tbaa !24
  %1992 = load i32, ptr %19, align 4, !tbaa !19
  %1993 = xor i32 %1991, %1992
  %1994 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 2
  %1995 = load i32, ptr %1994, align 4, !tbaa !24
  %1996 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 1
  %1997 = load i32, ptr %1996, align 4, !tbaa !23
  %1998 = and i32 %1995, %1997
  %1999 = xor i32 %1993, %1998
  %2000 = load ptr, ptr %3, align 8, !tbaa !5
  %2001 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2000, i32 0, i32 1
  %2002 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2001, i64 0, i64 0
  %2003 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2002, i32 0, i32 2
  store i32 %1999, ptr %2003, align 8, !tbaa !24
  br label %2004

2004:                                             ; preds = %1971
  br label %2005

2005:                                             ; preds = %2004
  br label %2006

2006:                                             ; preds = %2005
  %2007 = call i32 @aead_random_generate_32()
  store i32 %2007, ptr %19, align 4, !tbaa !19
  %2008 = load i32, ptr %19, align 4, !tbaa !19
  %2009 = load ptr, ptr %3, align 8, !tbaa !5
  %2010 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2009, i32 0, i32 1
  %2011 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2010, i64 0, i64 0
  %2012 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2011, i32 0, i32 1
  %2013 = load i32, ptr %2012, align 4, !tbaa !23
  %2014 = xor i32 %2013, %2008
  store i32 %2014, ptr %2012, align 4, !tbaa !23
  %2015 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 3
  %2016 = load i32, ptr %2015, align 4, !tbaa !25
  %2017 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 1
  %2018 = load i32, ptr %2017, align 4, !tbaa !23
  %2019 = and i32 %2016, %2018
  %2020 = load i32, ptr %19, align 4, !tbaa !19
  %2021 = xor i32 %2020, %2019
  store i32 %2021, ptr %19, align 4, !tbaa !19
  %2022 = load ptr, ptr %3, align 8, !tbaa !5
  %2023 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2022, i32 0, i32 1
  %2024 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2023, i64 0, i64 0
  %2025 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2024, i32 0, i32 3
  %2026 = load i32, ptr %2025, align 4, !tbaa !25
  %2027 = load i32, ptr %19, align 4, !tbaa !19
  %2028 = xor i32 %2026, %2027
  %2029 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 3
  %2030 = load i32, ptr %2029, align 4, !tbaa !25
  %2031 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 1
  %2032 = load i32, ptr %2031, align 4, !tbaa !23
  %2033 = and i32 %2030, %2032
  %2034 = xor i32 %2028, %2033
  %2035 = load ptr, ptr %3, align 8, !tbaa !5
  %2036 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2035, i32 0, i32 1
  %2037 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2036, i64 0, i64 0
  %2038 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2037, i32 0, i32 3
  store i32 %2034, ptr %2038, align 4, !tbaa !25
  br label %2039

2039:                                             ; preds = %2006
  br label %2040

2040:                                             ; preds = %2039
  %2041 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 2
  %2042 = load i32, ptr %2041, align 4, !tbaa !24
  %2043 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 2
  %2044 = load i32, ptr %2043, align 4, !tbaa !24
  %2045 = and i32 %2042, %2044
  %2046 = load ptr, ptr %3, align 8, !tbaa !5
  %2047 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2046, i32 0, i32 1
  %2048 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2047, i64 0, i64 0
  %2049 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2048, i32 0, i32 2
  %2050 = load i32, ptr %2049, align 8, !tbaa !24
  %2051 = xor i32 %2050, %2045
  store i32 %2051, ptr %2049, align 8, !tbaa !24
  br label %2052

2052:                                             ; preds = %2040
  %2053 = call i32 @aead_random_generate_32()
  store i32 %2053, ptr %19, align 4, !tbaa !19
  %2054 = load i32, ptr %19, align 4, !tbaa !19
  %2055 = load ptr, ptr %3, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2055, i32 0, i32 1
  %2057 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2056, i64 0, i64 0
  %2058 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2057, i32 0, i32 2
  %2059 = load i32, ptr %2058, align 8, !tbaa !24
  %2060 = xor i32 %2059, %2054
  store i32 %2060, ptr %2058, align 8, !tbaa !24
  %2061 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 3
  %2062 = load i32, ptr %2061, align 4, !tbaa !25
  %2063 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 2
  %2064 = load i32, ptr %2063, align 4, !tbaa !24
  %2065 = and i32 %2062, %2064
  %2066 = load i32, ptr %19, align 4, !tbaa !19
  %2067 = xor i32 %2066, %2065
  store i32 %2067, ptr %19, align 4, !tbaa !19
  %2068 = load ptr, ptr %3, align 8, !tbaa !5
  %2069 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2068, i32 0, i32 1
  %2070 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2069, i64 0, i64 0
  %2071 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2070, i32 0, i32 3
  %2072 = load i32, ptr %2071, align 4, !tbaa !25
  %2073 = load i32, ptr %19, align 4, !tbaa !19
  %2074 = xor i32 %2072, %2073
  %2075 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 3
  %2076 = load i32, ptr %2075, align 4, !tbaa !25
  %2077 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 2
  %2078 = load i32, ptr %2077, align 4, !tbaa !24
  %2079 = and i32 %2076, %2078
  %2080 = xor i32 %2074, %2079
  %2081 = load ptr, ptr %3, align 8, !tbaa !5
  %2082 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2081, i32 0, i32 1
  %2083 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2082, i64 0, i64 0
  %2084 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2083, i32 0, i32 3
  store i32 %2080, ptr %2084, align 4, !tbaa !25
  br label %2085

2085:                                             ; preds = %2052
  br label %2086

2086:                                             ; preds = %2085
  %2087 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %17, i32 0, i32 3
  %2088 = load i32, ptr %2087, align 4, !tbaa !25
  %2089 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %18, i32 0, i32 3
  %2090 = load i32, ptr %2089, align 4, !tbaa !25
  %2091 = and i32 %2088, %2090
  %2092 = load ptr, ptr %3, align 8, !tbaa !5
  %2093 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2092, i32 0, i32 1
  %2094 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2093, i64 0, i64 0
  %2095 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2094, i32 0, i32 3
  %2096 = load i32, ptr %2095, align 4, !tbaa !25
  %2097 = xor i32 %2096, %2091
  store i32 %2097, ptr %2095, align 4, !tbaa !25
  br label %2098

2098:                                             ; preds = %2086
  br label %2099

2099:                                             ; preds = %2098
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %9, ptr align 4 %17, i64 16, i1 false), !tbaa.struct !18
  br label %2100

2100:                                             ; preds = %2099
  %2101 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %2102 = load i32, ptr %2101, align 4, !tbaa !21
  %2103 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 0
  %2104 = load i32, ptr %2103, align 4, !tbaa !21
  %2105 = and i32 %2102, %2104
  %2106 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %2107 = load i32, ptr %2106, align 4, !tbaa !21
  %2108 = xor i32 %2107, %2105
  store i32 %2108, ptr %2106, align 4, !tbaa !21
  br label %2109

2109:                                             ; preds = %2100
  %2110 = call i32 @aead_random_generate_32()
  store i32 %2110, ptr %19, align 4, !tbaa !19
  %2111 = load i32, ptr %19, align 4, !tbaa !19
  %2112 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %2113 = load i32, ptr %2112, align 4, !tbaa !21
  %2114 = xor i32 %2113, %2111
  store i32 %2114, ptr %2112, align 4, !tbaa !21
  %2115 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 1
  %2116 = load i32, ptr %2115, align 4, !tbaa !23
  %2117 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %2118 = load i32, ptr %2117, align 4, !tbaa !21
  %2119 = and i32 %2116, %2118
  %2120 = load i32, ptr %19, align 4, !tbaa !19
  %2121 = xor i32 %2120, %2119
  store i32 %2121, ptr %19, align 4, !tbaa !19
  %2122 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %2123 = load i32, ptr %2122, align 4, !tbaa !23
  %2124 = load i32, ptr %19, align 4, !tbaa !19
  %2125 = xor i32 %2123, %2124
  %2126 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %2127 = load i32, ptr %2126, align 4, !tbaa !23
  %2128 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 0
  %2129 = load i32, ptr %2128, align 4, !tbaa !21
  %2130 = and i32 %2127, %2129
  %2131 = xor i32 %2125, %2130
  %2132 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  store i32 %2131, ptr %2132, align 4, !tbaa !23
  br label %2133

2133:                                             ; preds = %2109
  br label %2134

2134:                                             ; preds = %2133
  br label %2135

2135:                                             ; preds = %2134
  %2136 = call i32 @aead_random_generate_32()
  store i32 %2136, ptr %19, align 4, !tbaa !19
  %2137 = load i32, ptr %19, align 4, !tbaa !19
  %2138 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %2139 = load i32, ptr %2138, align 4, !tbaa !21
  %2140 = xor i32 %2139, %2137
  store i32 %2140, ptr %2138, align 4, !tbaa !21
  %2141 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 2
  %2142 = load i32, ptr %2141, align 4, !tbaa !24
  %2143 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %2144 = load i32, ptr %2143, align 4, !tbaa !21
  %2145 = and i32 %2142, %2144
  %2146 = load i32, ptr %19, align 4, !tbaa !19
  %2147 = xor i32 %2146, %2145
  store i32 %2147, ptr %19, align 4, !tbaa !19
  %2148 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %2149 = load i32, ptr %2148, align 4, !tbaa !24
  %2150 = load i32, ptr %19, align 4, !tbaa !19
  %2151 = xor i32 %2149, %2150
  %2152 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %2153 = load i32, ptr %2152, align 4, !tbaa !24
  %2154 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 0
  %2155 = load i32, ptr %2154, align 4, !tbaa !21
  %2156 = and i32 %2153, %2155
  %2157 = xor i32 %2151, %2156
  %2158 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  store i32 %2157, ptr %2158, align 4, !tbaa !24
  br label %2159

2159:                                             ; preds = %2135
  br label %2160

2160:                                             ; preds = %2159
  br label %2161

2161:                                             ; preds = %2160
  %2162 = call i32 @aead_random_generate_32()
  store i32 %2162, ptr %19, align 4, !tbaa !19
  %2163 = load i32, ptr %19, align 4, !tbaa !19
  %2164 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %2165 = load i32, ptr %2164, align 4, !tbaa !21
  %2166 = xor i32 %2165, %2163
  store i32 %2166, ptr %2164, align 4, !tbaa !21
  %2167 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 3
  %2168 = load i32, ptr %2167, align 4, !tbaa !25
  %2169 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %2170 = load i32, ptr %2169, align 4, !tbaa !21
  %2171 = and i32 %2168, %2170
  %2172 = load i32, ptr %19, align 4, !tbaa !19
  %2173 = xor i32 %2172, %2171
  store i32 %2173, ptr %19, align 4, !tbaa !19
  %2174 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %2175 = load i32, ptr %2174, align 4, !tbaa !25
  %2176 = load i32, ptr %19, align 4, !tbaa !19
  %2177 = xor i32 %2175, %2176
  %2178 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %2179 = load i32, ptr %2178, align 4, !tbaa !25
  %2180 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 0
  %2181 = load i32, ptr %2180, align 4, !tbaa !21
  %2182 = and i32 %2179, %2181
  %2183 = xor i32 %2177, %2182
  %2184 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  store i32 %2183, ptr %2184, align 4, !tbaa !25
  br label %2185

2185:                                             ; preds = %2161
  br label %2186

2186:                                             ; preds = %2185
  %2187 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %2188 = load i32, ptr %2187, align 4, !tbaa !23
  %2189 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 1
  %2190 = load i32, ptr %2189, align 4, !tbaa !23
  %2191 = and i32 %2188, %2190
  %2192 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %2193 = load i32, ptr %2192, align 4, !tbaa !23
  %2194 = xor i32 %2193, %2191
  store i32 %2194, ptr %2192, align 4, !tbaa !23
  br label %2195

2195:                                             ; preds = %2186
  %2196 = call i32 @aead_random_generate_32()
  store i32 %2196, ptr %19, align 4, !tbaa !19
  %2197 = load i32, ptr %19, align 4, !tbaa !19
  %2198 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %2199 = load i32, ptr %2198, align 4, !tbaa !23
  %2200 = xor i32 %2199, %2197
  store i32 %2200, ptr %2198, align 4, !tbaa !23
  %2201 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 2
  %2202 = load i32, ptr %2201, align 4, !tbaa !24
  %2203 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %2204 = load i32, ptr %2203, align 4, !tbaa !23
  %2205 = and i32 %2202, %2204
  %2206 = load i32, ptr %19, align 4, !tbaa !19
  %2207 = xor i32 %2206, %2205
  store i32 %2207, ptr %19, align 4, !tbaa !19
  %2208 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %2209 = load i32, ptr %2208, align 4, !tbaa !24
  %2210 = load i32, ptr %19, align 4, !tbaa !19
  %2211 = xor i32 %2209, %2210
  %2212 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %2213 = load i32, ptr %2212, align 4, !tbaa !24
  %2214 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 1
  %2215 = load i32, ptr %2214, align 4, !tbaa !23
  %2216 = and i32 %2213, %2215
  %2217 = xor i32 %2211, %2216
  %2218 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  store i32 %2217, ptr %2218, align 4, !tbaa !24
  br label %2219

2219:                                             ; preds = %2195
  br label %2220

2220:                                             ; preds = %2219
  br label %2221

2221:                                             ; preds = %2220
  %2222 = call i32 @aead_random_generate_32()
  store i32 %2222, ptr %19, align 4, !tbaa !19
  %2223 = load i32, ptr %19, align 4, !tbaa !19
  %2224 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %2225 = load i32, ptr %2224, align 4, !tbaa !23
  %2226 = xor i32 %2225, %2223
  store i32 %2226, ptr %2224, align 4, !tbaa !23
  %2227 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 3
  %2228 = load i32, ptr %2227, align 4, !tbaa !25
  %2229 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %2230 = load i32, ptr %2229, align 4, !tbaa !23
  %2231 = and i32 %2228, %2230
  %2232 = load i32, ptr %19, align 4, !tbaa !19
  %2233 = xor i32 %2232, %2231
  store i32 %2233, ptr %19, align 4, !tbaa !19
  %2234 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %2235 = load i32, ptr %2234, align 4, !tbaa !25
  %2236 = load i32, ptr %19, align 4, !tbaa !19
  %2237 = xor i32 %2235, %2236
  %2238 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %2239 = load i32, ptr %2238, align 4, !tbaa !25
  %2240 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 1
  %2241 = load i32, ptr %2240, align 4, !tbaa !23
  %2242 = and i32 %2239, %2241
  %2243 = xor i32 %2237, %2242
  %2244 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  store i32 %2243, ptr %2244, align 4, !tbaa !25
  br label %2245

2245:                                             ; preds = %2221
  br label %2246

2246:                                             ; preds = %2245
  %2247 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %2248 = load i32, ptr %2247, align 4, !tbaa !24
  %2249 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 2
  %2250 = load i32, ptr %2249, align 4, !tbaa !24
  %2251 = and i32 %2248, %2250
  %2252 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %2253 = load i32, ptr %2252, align 4, !tbaa !24
  %2254 = xor i32 %2253, %2251
  store i32 %2254, ptr %2252, align 4, !tbaa !24
  br label %2255

2255:                                             ; preds = %2246
  %2256 = call i32 @aead_random_generate_32()
  store i32 %2256, ptr %19, align 4, !tbaa !19
  %2257 = load i32, ptr %19, align 4, !tbaa !19
  %2258 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %2259 = load i32, ptr %2258, align 4, !tbaa !24
  %2260 = xor i32 %2259, %2257
  store i32 %2260, ptr %2258, align 4, !tbaa !24
  %2261 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 3
  %2262 = load i32, ptr %2261, align 4, !tbaa !25
  %2263 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %2264 = load i32, ptr %2263, align 4, !tbaa !24
  %2265 = and i32 %2262, %2264
  %2266 = load i32, ptr %19, align 4, !tbaa !19
  %2267 = xor i32 %2266, %2265
  store i32 %2267, ptr %19, align 4, !tbaa !19
  %2268 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %2269 = load i32, ptr %2268, align 4, !tbaa !25
  %2270 = load i32, ptr %19, align 4, !tbaa !19
  %2271 = xor i32 %2269, %2270
  %2272 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %2273 = load i32, ptr %2272, align 4, !tbaa !25
  %2274 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 2
  %2275 = load i32, ptr %2274, align 4, !tbaa !24
  %2276 = and i32 %2273, %2275
  %2277 = xor i32 %2271, %2276
  %2278 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  store i32 %2277, ptr %2278, align 4, !tbaa !25
  br label %2279

2279:                                             ; preds = %2255
  br label %2280

2280:                                             ; preds = %2279
  %2281 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %2282 = load i32, ptr %2281, align 4, !tbaa !25
  %2283 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %16, i32 0, i32 3
  %2284 = load i32, ptr %2283, align 4, !tbaa !25
  %2285 = and i32 %2282, %2284
  %2286 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %2287 = load i32, ptr %2286, align 4, !tbaa !25
  %2288 = xor i32 %2287, %2285
  store i32 %2288, ptr %2286, align 4, !tbaa !25
  br label %2289

2289:                                             ; preds = %2280
  br label %2290

2290:                                             ; preds = %2289
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #4
  br label %2291

2291:                                             ; preds = %2290
  br label %2292

2292:                                             ; preds = %2291
  br label %2293

2293:                                             ; preds = %2292
  br label %2294

2294:                                             ; preds = %2293
  %2295 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 0
  %2296 = load i64, ptr %2295, align 8, !tbaa !10
  %2297 = shl i64 %2296, 1
  %2298 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %2299 = load i32, ptr %2298, align 4, !tbaa !21
  %2300 = lshr i32 %2299, 31
  %2301 = zext i32 %2300 to i64
  %2302 = or i64 %2297, %2301
  %2303 = load ptr, ptr %3, align 8, !tbaa !5
  %2304 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2303, i32 0, i32 0
  %2305 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %2304, i64 0, i64 1
  %2306 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %2305, i32 0, i32 0
  store i64 %2302, ptr %2306, align 8, !tbaa !10
  %2307 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %2308 = load i32, ptr %2307, align 4, !tbaa !21
  %2309 = shl i32 %2308, 1
  %2310 = zext i32 %2309 to i64
  %2311 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 0
  %2312 = load i64, ptr %2311, align 8, !tbaa !10
  %2313 = lshr i64 %2312, 63
  %2314 = or i64 %2310, %2313
  %2315 = trunc i64 %2314 to i32
  %2316 = load ptr, ptr %3, align 8, !tbaa !5
  %2317 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2316, i32 0, i32 1
  %2318 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2317, i64 0, i64 1
  %2319 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2318, i32 0, i32 0
  store i32 %2315, ptr %2319, align 8, !tbaa !21
  br label %2320

2320:                                             ; preds = %2294
  br label %2321

2321:                                             ; preds = %2320
  br label %2322

2322:                                             ; preds = %2321
  %2323 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 1
  %2324 = load i64, ptr %2323, align 8, !tbaa !15
  %2325 = shl i64 %2324, 1
  %2326 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %2327 = load i32, ptr %2326, align 4, !tbaa !23
  %2328 = lshr i32 %2327, 31
  %2329 = zext i32 %2328 to i64
  %2330 = or i64 %2325, %2329
  %2331 = load ptr, ptr %3, align 8, !tbaa !5
  %2332 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2331, i32 0, i32 0
  %2333 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %2332, i64 0, i64 1
  %2334 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %2333, i32 0, i32 1
  store i64 %2330, ptr %2334, align 8, !tbaa !15
  %2335 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %2336 = load i32, ptr %2335, align 4, !tbaa !23
  %2337 = shl i32 %2336, 1
  %2338 = zext i32 %2337 to i64
  %2339 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 1
  %2340 = load i64, ptr %2339, align 8, !tbaa !15
  %2341 = lshr i64 %2340, 63
  %2342 = or i64 %2338, %2341
  %2343 = trunc i64 %2342 to i32
  %2344 = load ptr, ptr %3, align 8, !tbaa !5
  %2345 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2344, i32 0, i32 1
  %2346 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2345, i64 0, i64 1
  %2347 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2346, i32 0, i32 1
  store i32 %2343, ptr %2347, align 4, !tbaa !23
  br label %2348

2348:                                             ; preds = %2322
  br label %2349

2349:                                             ; preds = %2348
  br label %2350

2350:                                             ; preds = %2349
  %2351 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 2
  %2352 = load i64, ptr %2351, align 8, !tbaa !16
  %2353 = shl i64 %2352, 1
  %2354 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %2355 = load i32, ptr %2354, align 4, !tbaa !24
  %2356 = lshr i32 %2355, 31
  %2357 = zext i32 %2356 to i64
  %2358 = or i64 %2353, %2357
  %2359 = load ptr, ptr %3, align 8, !tbaa !5
  %2360 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2359, i32 0, i32 0
  %2361 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %2360, i64 0, i64 1
  %2362 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %2361, i32 0, i32 2
  store i64 %2358, ptr %2362, align 8, !tbaa !16
  %2363 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %2364 = load i32, ptr %2363, align 4, !tbaa !24
  %2365 = shl i32 %2364, 1
  %2366 = zext i32 %2365 to i64
  %2367 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 2
  %2368 = load i64, ptr %2367, align 8, !tbaa !16
  %2369 = lshr i64 %2368, 63
  %2370 = or i64 %2366, %2369
  %2371 = trunc i64 %2370 to i32
  %2372 = load ptr, ptr %3, align 8, !tbaa !5
  %2373 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2372, i32 0, i32 1
  %2374 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2373, i64 0, i64 1
  %2375 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2374, i32 0, i32 2
  store i32 %2371, ptr %2375, align 8, !tbaa !24
  br label %2376

2376:                                             ; preds = %2350
  br label %2377

2377:                                             ; preds = %2376
  br label %2378

2378:                                             ; preds = %2377
  %2379 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 3
  %2380 = load i64, ptr %2379, align 8, !tbaa !17
  %2381 = shl i64 %2380, 1
  %2382 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %2383 = load i32, ptr %2382, align 4, !tbaa !25
  %2384 = lshr i32 %2383, 31
  %2385 = zext i32 %2384 to i64
  %2386 = or i64 %2381, %2385
  %2387 = load ptr, ptr %3, align 8, !tbaa !5
  %2388 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2387, i32 0, i32 0
  %2389 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %2388, i64 0, i64 1
  %2390 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %2389, i32 0, i32 3
  store i64 %2386, ptr %2390, align 8, !tbaa !17
  %2391 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %2392 = load i32, ptr %2391, align 4, !tbaa !25
  %2393 = shl i32 %2392, 1
  %2394 = zext i32 %2393 to i64
  %2395 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %6, i32 0, i32 3
  %2396 = load i64, ptr %2395, align 8, !tbaa !17
  %2397 = lshr i64 %2396, 63
  %2398 = or i64 %2394, %2397
  %2399 = trunc i64 %2398 to i32
  %2400 = load ptr, ptr %3, align 8, !tbaa !5
  %2401 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2400, i32 0, i32 1
  %2402 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2401, i64 0, i64 1
  %2403 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2402, i32 0, i32 3
  store i32 %2399, ptr %2403, align 4, !tbaa !25
  br label %2404

2404:                                             ; preds = %2378
  br label %2405

2405:                                             ; preds = %2404
  br label %2406

2406:                                             ; preds = %2405
  br label %2407

2407:                                             ; preds = %2406
  br label %2408

2408:                                             ; preds = %2407
  br label %2409

2409:                                             ; preds = %2408
  %2410 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 0
  %2411 = load i64, ptr %2410, align 8, !tbaa !10
  %2412 = shl i64 %2411, 8
  %2413 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %2414 = load i32, ptr %2413, align 4, !tbaa !21
  %2415 = lshr i32 %2414, 24
  %2416 = zext i32 %2415 to i64
  %2417 = or i64 %2412, %2416
  %2418 = load ptr, ptr %3, align 8, !tbaa !5
  %2419 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2418, i32 0, i32 0
  %2420 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %2419, i64 0, i64 2
  %2421 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %2420, i32 0, i32 0
  store i64 %2417, ptr %2421, align 8, !tbaa !10
  %2422 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %2423 = load i32, ptr %2422, align 4, !tbaa !21
  %2424 = shl i32 %2423, 8
  %2425 = zext i32 %2424 to i64
  %2426 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 0
  %2427 = load i64, ptr %2426, align 8, !tbaa !10
  %2428 = lshr i64 %2427, 56
  %2429 = or i64 %2425, %2428
  %2430 = trunc i64 %2429 to i32
  %2431 = load ptr, ptr %3, align 8, !tbaa !5
  %2432 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2431, i32 0, i32 1
  %2433 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2432, i64 0, i64 2
  %2434 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2433, i32 0, i32 0
  store i32 %2430, ptr %2434, align 8, !tbaa !21
  br label %2435

2435:                                             ; preds = %2409
  br label %2436

2436:                                             ; preds = %2435
  br label %2437

2437:                                             ; preds = %2436
  %2438 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 1
  %2439 = load i64, ptr %2438, align 8, !tbaa !15
  %2440 = shl i64 %2439, 8
  %2441 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %2442 = load i32, ptr %2441, align 4, !tbaa !23
  %2443 = lshr i32 %2442, 24
  %2444 = zext i32 %2443 to i64
  %2445 = or i64 %2440, %2444
  %2446 = load ptr, ptr %3, align 8, !tbaa !5
  %2447 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2446, i32 0, i32 0
  %2448 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %2447, i64 0, i64 2
  %2449 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %2448, i32 0, i32 1
  store i64 %2445, ptr %2449, align 8, !tbaa !15
  %2450 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %2451 = load i32, ptr %2450, align 4, !tbaa !23
  %2452 = shl i32 %2451, 8
  %2453 = zext i32 %2452 to i64
  %2454 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 1
  %2455 = load i64, ptr %2454, align 8, !tbaa !15
  %2456 = lshr i64 %2455, 56
  %2457 = or i64 %2453, %2456
  %2458 = trunc i64 %2457 to i32
  %2459 = load ptr, ptr %3, align 8, !tbaa !5
  %2460 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2459, i32 0, i32 1
  %2461 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2460, i64 0, i64 2
  %2462 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2461, i32 0, i32 1
  store i32 %2458, ptr %2462, align 4, !tbaa !23
  br label %2463

2463:                                             ; preds = %2437
  br label %2464

2464:                                             ; preds = %2463
  br label %2465

2465:                                             ; preds = %2464
  %2466 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 2
  %2467 = load i64, ptr %2466, align 8, !tbaa !16
  %2468 = shl i64 %2467, 8
  %2469 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %2470 = load i32, ptr %2469, align 4, !tbaa !24
  %2471 = lshr i32 %2470, 24
  %2472 = zext i32 %2471 to i64
  %2473 = or i64 %2468, %2472
  %2474 = load ptr, ptr %3, align 8, !tbaa !5
  %2475 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2474, i32 0, i32 0
  %2476 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %2475, i64 0, i64 2
  %2477 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %2476, i32 0, i32 2
  store i64 %2473, ptr %2477, align 8, !tbaa !16
  %2478 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %2479 = load i32, ptr %2478, align 4, !tbaa !24
  %2480 = shl i32 %2479, 8
  %2481 = zext i32 %2480 to i64
  %2482 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 2
  %2483 = load i64, ptr %2482, align 8, !tbaa !16
  %2484 = lshr i64 %2483, 56
  %2485 = or i64 %2481, %2484
  %2486 = trunc i64 %2485 to i32
  %2487 = load ptr, ptr %3, align 8, !tbaa !5
  %2488 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2487, i32 0, i32 1
  %2489 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2488, i64 0, i64 2
  %2490 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2489, i32 0, i32 2
  store i32 %2486, ptr %2490, align 8, !tbaa !24
  br label %2491

2491:                                             ; preds = %2465
  br label %2492

2492:                                             ; preds = %2491
  br label %2493

2493:                                             ; preds = %2492
  %2494 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 3
  %2495 = load i64, ptr %2494, align 8, !tbaa !17
  %2496 = shl i64 %2495, 8
  %2497 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %2498 = load i32, ptr %2497, align 4, !tbaa !25
  %2499 = lshr i32 %2498, 24
  %2500 = zext i32 %2499 to i64
  %2501 = or i64 %2496, %2500
  %2502 = load ptr, ptr %3, align 8, !tbaa !5
  %2503 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2502, i32 0, i32 0
  %2504 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %2503, i64 0, i64 2
  %2505 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %2504, i32 0, i32 3
  store i64 %2501, ptr %2505, align 8, !tbaa !17
  %2506 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %2507 = load i32, ptr %2506, align 4, !tbaa !25
  %2508 = shl i32 %2507, 8
  %2509 = zext i32 %2508 to i64
  %2510 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %7, i32 0, i32 3
  %2511 = load i64, ptr %2510, align 8, !tbaa !17
  %2512 = lshr i64 %2511, 56
  %2513 = or i64 %2509, %2512
  %2514 = trunc i64 %2513 to i32
  %2515 = load ptr, ptr %3, align 8, !tbaa !5
  %2516 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2515, i32 0, i32 1
  %2517 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2516, i64 0, i64 2
  %2518 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2517, i32 0, i32 3
  store i32 %2514, ptr %2518, align 4, !tbaa !25
  br label %2519

2519:                                             ; preds = %2493
  br label %2520

2520:                                             ; preds = %2519
  br label %2521

2521:                                             ; preds = %2520
  br label %2522

2522:                                             ; preds = %2521
  br label %2523

2523:                                             ; preds = %2522
  br label %2524

2524:                                             ; preds = %2523
  %2525 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 0
  %2526 = load i64, ptr %2525, align 8, !tbaa !10
  %2527 = shl i64 %2526, 55
  %2528 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %2529 = load i32, ptr %2528, align 4, !tbaa !21
  %2530 = zext i32 %2529 to i64
  %2531 = shl i64 %2530, 23
  %2532 = or i64 %2527, %2531
  %2533 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 0
  %2534 = load i64, ptr %2533, align 8, !tbaa !10
  %2535 = lshr i64 %2534, 41
  %2536 = or i64 %2532, %2535
  %2537 = load ptr, ptr %3, align 8, !tbaa !5
  %2538 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2537, i32 0, i32 0
  %2539 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %2538, i64 0, i64 3
  %2540 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %2539, i32 0, i32 0
  store i64 %2536, ptr %2540, align 8, !tbaa !10
  %2541 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 0
  %2542 = load i64, ptr %2541, align 8, !tbaa !10
  %2543 = shl i64 %2542, 23
  %2544 = lshr i64 %2543, 32
  %2545 = trunc i64 %2544 to i32
  %2546 = load ptr, ptr %3, align 8, !tbaa !5
  %2547 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2546, i32 0, i32 1
  %2548 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2547, i64 0, i64 3
  %2549 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2548, i32 0, i32 0
  store i32 %2545, ptr %2549, align 8, !tbaa !21
  br label %2550

2550:                                             ; preds = %2524
  br label %2551

2551:                                             ; preds = %2550
  br label %2552

2552:                                             ; preds = %2551
  %2553 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 1
  %2554 = load i64, ptr %2553, align 8, !tbaa !15
  %2555 = shl i64 %2554, 55
  %2556 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %2557 = load i32, ptr %2556, align 4, !tbaa !23
  %2558 = zext i32 %2557 to i64
  %2559 = shl i64 %2558, 23
  %2560 = or i64 %2555, %2559
  %2561 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 1
  %2562 = load i64, ptr %2561, align 8, !tbaa !15
  %2563 = lshr i64 %2562, 41
  %2564 = or i64 %2560, %2563
  %2565 = load ptr, ptr %3, align 8, !tbaa !5
  %2566 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2565, i32 0, i32 0
  %2567 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %2566, i64 0, i64 3
  %2568 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %2567, i32 0, i32 1
  store i64 %2564, ptr %2568, align 8, !tbaa !15
  %2569 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 1
  %2570 = load i64, ptr %2569, align 8, !tbaa !15
  %2571 = shl i64 %2570, 23
  %2572 = lshr i64 %2571, 32
  %2573 = trunc i64 %2572 to i32
  %2574 = load ptr, ptr %3, align 8, !tbaa !5
  %2575 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2574, i32 0, i32 1
  %2576 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2575, i64 0, i64 3
  %2577 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2576, i32 0, i32 1
  store i32 %2573, ptr %2577, align 4, !tbaa !23
  br label %2578

2578:                                             ; preds = %2552
  br label %2579

2579:                                             ; preds = %2578
  br label %2580

2580:                                             ; preds = %2579
  %2581 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 2
  %2582 = load i64, ptr %2581, align 8, !tbaa !16
  %2583 = shl i64 %2582, 55
  %2584 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %2585 = load i32, ptr %2584, align 4, !tbaa !24
  %2586 = zext i32 %2585 to i64
  %2587 = shl i64 %2586, 23
  %2588 = or i64 %2583, %2587
  %2589 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 2
  %2590 = load i64, ptr %2589, align 8, !tbaa !16
  %2591 = lshr i64 %2590, 41
  %2592 = or i64 %2588, %2591
  %2593 = load ptr, ptr %3, align 8, !tbaa !5
  %2594 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2593, i32 0, i32 0
  %2595 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %2594, i64 0, i64 3
  %2596 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %2595, i32 0, i32 2
  store i64 %2592, ptr %2596, align 8, !tbaa !16
  %2597 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 2
  %2598 = load i64, ptr %2597, align 8, !tbaa !16
  %2599 = shl i64 %2598, 23
  %2600 = lshr i64 %2599, 32
  %2601 = trunc i64 %2600 to i32
  %2602 = load ptr, ptr %3, align 8, !tbaa !5
  %2603 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2602, i32 0, i32 1
  %2604 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2603, i64 0, i64 3
  %2605 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2604, i32 0, i32 2
  store i32 %2601, ptr %2605, align 8, !tbaa !24
  br label %2606

2606:                                             ; preds = %2580
  br label %2607

2607:                                             ; preds = %2606
  br label %2608

2608:                                             ; preds = %2607
  %2609 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 3
  %2610 = load i64, ptr %2609, align 8, !tbaa !17
  %2611 = shl i64 %2610, 55
  %2612 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %2613 = load i32, ptr %2612, align 4, !tbaa !25
  %2614 = zext i32 %2613 to i64
  %2615 = shl i64 %2614, 23
  %2616 = or i64 %2611, %2615
  %2617 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 3
  %2618 = load i64, ptr %2617, align 8, !tbaa !17
  %2619 = lshr i64 %2618, 41
  %2620 = or i64 %2616, %2619
  %2621 = load ptr, ptr %3, align 8, !tbaa !5
  %2622 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2621, i32 0, i32 0
  %2623 = getelementptr inbounds [4 x %struct.mask_x4_uint64_t], ptr %2622, i64 0, i64 3
  %2624 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %2623, i32 0, i32 3
  store i64 %2620, ptr %2624, align 8, !tbaa !17
  %2625 = getelementptr inbounds %struct.mask_x4_uint64_t, ptr %8, i32 0, i32 3
  %2626 = load i64, ptr %2625, align 8, !tbaa !17
  %2627 = shl i64 %2626, 23
  %2628 = lshr i64 %2627, 32
  %2629 = trunc i64 %2628 to i32
  %2630 = load ptr, ptr %3, align 8, !tbaa !5
  %2631 = getelementptr inbounds %struct.knot384_masked_state_t, ptr %2630, i32 0, i32 1
  %2632 = getelementptr inbounds [4 x %struct.mask_x4_uint32_t], ptr %2631, i64 0, i64 3
  %2633 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %2632, i32 0, i32 3
  store i32 %2629, ptr %2633, align 4, !tbaa !25
  br label %2634

2634:                                             ; preds = %2608
  br label %2635

2635:                                             ; preds = %2634
  br label %2636

2636:                                             ; preds = %2635
  br label %2637

2637:                                             ; preds = %2636
  br label %2638

2638:                                             ; preds = %2637
  %2639 = load i8, ptr %4, align 1, !tbaa !9
  %2640 = add i8 %2639, -1
  store i8 %2640, ptr %4, align 1, !tbaa !9
  %2641 = load ptr, ptr %5, align 8, !tbaa !5
  %2642 = getelementptr inbounds i8, ptr %2641, i32 1
  store ptr %2642, ptr %5, align 8, !tbaa !5
  br label %20, !llvm.loop !26

2643:                                             ; preds = %20
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #4
  ret void
}

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

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

declare i32 @aead_random_generate_32() #0

attributes #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 = { 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 #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !12, i64 0}
!11 = !{!"", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!12 = !{!"long", !7, i64 0}
!13 = !{i64 0, i64 8, !14, i64 8, i64 8, !14, i64 16, i64 8, !14, i64 24, i64 8, !14}
!14 = !{!12, !12, i64 0}
!15 = !{!11, !12, i64 8}
!16 = !{!11, !12, i64 16}
!17 = !{!11, !12, i64 24}
!18 = !{i64 0, i64 4, !19, i64 4, i64 4, !19, i64 8, i64 4, !19, i64 12, i64 4, !19}
!19 = !{!20, !20, i64 0}
!20 = !{!"int", !7, i64 0}
!21 = !{!22, !20, i64 0}
!22 = !{!"", !20, i64 0, !20, i64 4, !20, i64 8, !20, i64 12}
!23 = !{!22, !20, i64 4}
!24 = !{!22, !20, i64 8}
!25 = !{!22, !20, i64 12}
!26 = distinct !{!26, !27}
!27 = !{!"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"

@rc7 = external hidden local_unnamed_addr constant [104 x i8], align 16

declare i64 @aead_random_generate_64() local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @knot384_masked_permute_7(ptr noundef %0, i8 noundef zeroext %1) local_unnamed_addr #1 {
  %.not683 = icmp eq i8 %1, 0
  br i1 %.not683, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %2
  %.sroa.16307.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8
  %.sroa.26318.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16
  %.sroa.36329.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24
  %3 = getelementptr inbounds i8, ptr %0, i64 64
  %.sroa.17263.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 72
  %.sroa.30274.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 80
  %.sroa.43285.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 88
  %4 = getelementptr inbounds i8, ptr %0, i64 32
  %5 = getelementptr inbounds i8, ptr %0, i64 40
  %6 = getelementptr inbounds i8, ptr %0, i64 48
  %7 = getelementptr inbounds i8, ptr %0, i64 56
  %8 = getelementptr inbounds i8, ptr %0, i64 96
  %9 = getelementptr inbounds i8, ptr %0, i64 104
  %10 = getelementptr inbounds i8, ptr %0, i64 112
  %11 = getelementptr inbounds i8, ptr %0, i64 120
  %12 = getelementptr inbounds i8, ptr %0, i64 128
  %.sroa.16.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 132
  %.sroa.26.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 136
  %.sroa.36.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 140
  %13 = getelementptr inbounds i8, ptr %0, i64 160
  %.sroa.17.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 164
  %.sroa.30.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 168
  %.sroa.43.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 172
  %14 = getelementptr inbounds i8, ptr %0, i64 144
  %15 = getelementptr inbounds i8, ptr %0, i64 148
  %16 = getelementptr inbounds i8, ptr %0, i64 152
  %17 = getelementptr inbounds i8, ptr %0, i64 156
  %18 = getelementptr inbounds i8, ptr %0, i64 176
  %19 = getelementptr inbounds i8, ptr %0, i64 180
  %20 = getelementptr inbounds i8, ptr %0, i64 184
  %21 = getelementptr inbounds i8, ptr %0, i64 188
  %.sroa.0253.0.copyload.pre = load i64, ptr %3, align 8, !tbaa !5
  %.sroa.17263.0.copyload.pre = load i64, ptr %.sroa.17263.0..sroa_idx, align 8, !tbaa !5
  %.sroa.30274.0.copyload.pre = load i64, ptr %.sroa.30274.0..sroa_idx, align 8, !tbaa !5
  %.sroa.43285.0.copyload.pre = load i64, ptr %.sroa.43285.0..sroa_idx, align 8, !tbaa !5
  br label %22

22:                                               ; preds = %.lr.ph, %22
  %.sroa.43285.0.copyload = phi i64 [ %.sroa.43285.0.copyload.pre, %.lr.ph ], [ %654, %22 ]
  %.sroa.30274.0.copyload = phi i64 [ %.sroa.30274.0.copyload.pre, %.lr.ph ], [ %646, %22 ]
  %.sroa.17263.0.copyload = phi i64 [ %.sroa.17263.0.copyload.pre, %.lr.ph ], [ %638, %22 ]
  %.sroa.0253.0.copyload = phi i64 [ %.sroa.0253.0.copyload.pre, %.lr.ph ], [ %630, %22 ]
  %.0685 = phi i8 [ %1, %.lr.ph ], [ %691, %22 ]
  %.0682684 = phi ptr [ @rc7, %.lr.ph ], [ %692, %22 ]
  %23 = load i8, ptr %.0682684, align 1, !tbaa !9
  %24 = zext i8 %23 to i64
  %25 = load i64, ptr %0, align 8, !tbaa !10
  %26 = xor i64 %25, %24
  store i64 %26, ptr %0, align 8, !tbaa !10
  %.sroa.16307.0.copyload = load i64, ptr %.sroa.16307.0..sroa_idx, align 8, !tbaa !5
  %.sroa.26318.0.copyload = load i64, ptr %.sroa.26318.0..sroa_idx, align 8, !tbaa !5
  %.sroa.36329.0.copyload = load i64, ptr %.sroa.36329.0..sroa_idx, align 8, !tbaa !5
  %27 = xor i64 %26, -1
  %28 = load i64, ptr %4, align 8, !tbaa !10
  %29 = and i64 %28, %27
  %30 = xor i64 %29, %.sroa.0253.0.copyload
  %31 = tail call i64 @aead_random_generate_64() #2
  %32 = xor i64 %30, %31
  %33 = load i64, ptr %4, align 8, !tbaa !10
  %34 = and i64 %33, %.sroa.16307.0.copyload
  %35 = load i64, ptr %5, align 8, !tbaa !12
  %36 = and i64 %35, %27
  %37 = tail call i64 @aead_random_generate_64() #2
  %38 = xor i64 %32, %37
  %39 = load i64, ptr %4, align 8, !tbaa !10
  %40 = and i64 %39, %.sroa.26318.0.copyload
  %41 = load i64, ptr %6, align 8, !tbaa !13
  %42 = and i64 %41, %27
  %43 = tail call i64 @aead_random_generate_64() #2
  %44 = xor i64 %38, %43
  %45 = load i64, ptr %4, align 8, !tbaa !10
  %46 = and i64 %45, %.sroa.36329.0.copyload
  %47 = load i64, ptr %7, align 8, !tbaa !14
  %48 = and i64 %47, %27
  %49 = load i64, ptr %5, align 8, !tbaa !12
  %50 = and i64 %49, %.sroa.16307.0.copyload
  %51 = tail call i64 @aead_random_generate_64() #2
  %52 = load i64, ptr %5, align 8, !tbaa !12
  %53 = and i64 %52, %.sroa.26318.0.copyload
  %54 = load i64, ptr %6, align 8, !tbaa !13
  %55 = and i64 %54, %.sroa.16307.0.copyload
  %56 = tail call i64 @aead_random_generate_64() #2
  %57 = xor i64 %.sroa.17263.0.copyload, %34
  %58 = xor i64 %57, %36
  %59 = xor i64 %58, %50
  %60 = xor i64 %59, %31
  %61 = xor i64 %60, %51
  %62 = xor i64 %61, %56
  %63 = load i64, ptr %5, align 8, !tbaa !12
  %64 = and i64 %63, %.sroa.36329.0.copyload
  %65 = load i64, ptr %7, align 8, !tbaa !14
  %66 = and i64 %65, %.sroa.16307.0.copyload
  %67 = load i64, ptr %6, align 8, !tbaa !13
  %68 = and i64 %67, %.sroa.26318.0.copyload
  %69 = tail call i64 @aead_random_generate_64() #2
  %70 = xor i64 %.sroa.30274.0.copyload, %40
  %71 = xor i64 %70, %42
  %72 = xor i64 %71, %53
  %73 = xor i64 %72, %55
  %74 = xor i64 %73, %68
  %75 = xor i64 %74, %37
  %76 = xor i64 %75, %51
  %77 = xor i64 %76, %69
  %78 = load i64, ptr %6, align 8, !tbaa !13
  %79 = and i64 %78, %.sroa.36329.0.copyload
  %80 = load i64, ptr %7, align 8, !tbaa !14
  %81 = and i64 %80, %.sroa.26318.0.copyload
  %82 = and i64 %80, %.sroa.36329.0.copyload
  %83 = xor i64 %.sroa.43285.0.copyload, %46
  %84 = xor i64 %83, %48
  %85 = xor i64 %84, %64
  %86 = xor i64 %85, %66
  %87 = xor i64 %86, %79
  %88 = xor i64 %87, %81
  %89 = xor i64 %88, %82
  %90 = xor i64 %89, %43
  %91 = xor i64 %90, %56
  %92 = xor i64 %91, %69
  %93 = load i64, ptr %8, align 8, !tbaa !10
  %94 = xor i64 %93, %44
  %95 = load i64, ptr %9, align 8, !tbaa !12
  %96 = xor i64 %95, %62
  %97 = load i64, ptr %10, align 8, !tbaa !13
  %98 = xor i64 %97, %77
  %99 = load i64, ptr %11, align 8, !tbaa !14
  %100 = xor i64 %92, %99
  %101 = xor i64 %93, %27
  %102 = xor i64 %95, %.sroa.16307.0.copyload
  %103 = xor i64 %97, %.sroa.26318.0.copyload
  %104 = xor i64 %99, %.sroa.36329.0.copyload
  %105 = load i64, ptr %4, align 8, !tbaa !10
  %106 = load i64, ptr %3, align 8, !tbaa !10
  %107 = or i64 %106, %105
  %108 = xor i64 %107, %101
  %109 = tail call i64 @aead_random_generate_64() #2
  %110 = xor i64 %108, %109
  %111 = load i64, ptr %.sroa.17263.0..sroa_idx, align 8, !tbaa !12
  %112 = load i64, ptr %4, align 8, !tbaa !10
  %113 = xor i64 %112, -1
  %114 = and i64 %111, %113
  %115 = load i64, ptr %5, align 8, !tbaa !12
  %116 = load i64, ptr %3, align 8, !tbaa !10
  %117 = xor i64 %116, -1
  %118 = and i64 %115, %117
  %119 = tail call i64 @aead_random_generate_64() #2
  %120 = xor i64 %110, %119
  %121 = load i64, ptr %.sroa.30274.0..sroa_idx, align 8, !tbaa !13
  %122 = load i64, ptr %4, align 8, !tbaa !10
  %123 = xor i64 %122, -1
  %124 = and i64 %121, %123
  %125 = load i64, ptr %6, align 8, !tbaa !13
  %126 = load i64, ptr %3, align 8, !tbaa !10
  %127 = xor i64 %126, -1
  %128 = and i64 %125, %127
  %129 = tail call i64 @aead_random_generate_64() #2
  %130 = xor i64 %120, %129
  %131 = load i64, ptr %.sroa.43285.0..sroa_idx, align 8, !tbaa !14
  %132 = load i64, ptr %4, align 8, !tbaa !10
  %133 = xor i64 %132, -1
  %134 = and i64 %131, %133
  %135 = load i64, ptr %7, align 8, !tbaa !14
  %136 = load i64, ptr %3, align 8, !tbaa !10
  %137 = xor i64 %136, -1
  %138 = and i64 %135, %137
  %139 = load i64, ptr %5, align 8, !tbaa !12
  %140 = load i64, ptr %.sroa.17263.0..sroa_idx, align 8, !tbaa !12
  %141 = and i64 %140, %139
  %142 = tail call i64 @aead_random_generate_64() #2
  %143 = load i64, ptr %.sroa.30274.0..sroa_idx, align 8, !tbaa !13
  %144 = load i64, ptr %5, align 8, !tbaa !12
  %145 = and i64 %144, %143
  %146 = load i64, ptr %6, align 8, !tbaa !13
  %147 = load i64, ptr %.sroa.17263.0..sroa_idx, align 8, !tbaa !12
  %148 = and i64 %147, %146
  %149 = tail call i64 @aead_random_generate_64() #2
  %150 = xor i64 %114, %118
  %151 = xor i64 %150, %141
  %152 = xor i64 %151, %102
  %153 = xor i64 %152, %109
  %154 = xor i64 %153, %142
  %155 = xor i64 %154, %149
  %156 = load i64, ptr %.sroa.43285.0..sroa_idx, align 8, !tbaa !14
  %157 = load i64, ptr %5, align 8, !tbaa !12
  %158 = and i64 %157, %156
  %159 = load i64, ptr %7, align 8, !tbaa !14
  %160 = load i64, ptr %.sroa.17263.0..sroa_idx, align 8, !tbaa !12
  %161 = and i64 %160, %159
  %162 = load i64, ptr %6, align 8, !tbaa !13
  %163 = load i64, ptr %.sroa.30274.0..sroa_idx, align 8, !tbaa !13
  %164 = and i64 %163, %162
  %165 = tail call i64 @aead_random_generate_64() #2
  %166 = xor i64 %124, %128
  %167 = xor i64 %166, %145
  %168 = xor i64 %167, %148
  %169 = xor i64 %168, %164
  %170 = xor i64 %169, %103
  %171 = xor i64 %170, %119
  %172 = xor i64 %171, %142
  %173 = xor i64 %172, %165
  %174 = load i64, ptr %.sroa.43285.0..sroa_idx, align 8, !tbaa !14
  %175 = load i64, ptr %6, align 8, !tbaa !13
  %176 = and i64 %175, %174
  %177 = load i64, ptr %7, align 8, !tbaa !14
  %178 = load i64, ptr %.sroa.30274.0..sroa_idx, align 8, !tbaa !13
  %179 = and i64 %178, %177
  %180 = and i64 %177, %174
  %181 = xor i64 %134, %138
  %182 = xor i64 %181, %158
  %183 = xor i64 %182, %161
  %184 = xor i64 %183, %176
  %185 = xor i64 %184, %180
  %186 = xor i64 %185, %179
  %187 = xor i64 %186, %104
  %188 = xor i64 %187, %129
  %189 = xor i64 %188, %149
  %190 = xor i64 %189, %165
  %191 = load i64, ptr %4, align 8, !tbaa !10
  %192 = load i64, ptr %8, align 8, !tbaa !10
  %193 = xor i64 %192, %191
  %194 = load i64, ptr %5, align 8, !tbaa !12
  %195 = load i64, ptr %9, align 8, !tbaa !12
  %196 = xor i64 %195, %194
  %197 = load i64, ptr %10, align 8, !tbaa !13
  %198 = xor i64 %197, %175
  %199 = load i64, ptr %11, align 8, !tbaa !14
  %200 = xor i64 %199, %177
  store i64 %196, ptr %.sroa.16307.0..sroa_idx, align 8, !tbaa !5
  store i64 %198, ptr %.sroa.26318.0..sroa_idx, align 8, !tbaa !5
  store i64 %200, ptr %.sroa.36329.0..sroa_idx, align 8, !tbaa !5
  %201 = and i64 %101, %44
  %202 = xor i64 %193, %201
  store i64 %202, ptr %0, align 8, !tbaa !10
  %203 = tail call i64 @aead_random_generate_64() #2
  %204 = load i64, ptr %0, align 8, !tbaa !10
  %205 = xor i64 %204, %203
  store i64 %205, ptr %0, align 8, !tbaa !10
  %206 = and i64 %102, %44
  %207 = load i64, ptr %.sroa.16307.0..sroa_idx, align 8, !tbaa !12
  %208 = and i64 %101, %62
  %209 = xor i64 %206, %208
  %210 = xor i64 %209, %207
  %211 = xor i64 %210, %203
  store i64 %211, ptr %.sroa.16307.0..sroa_idx, align 8, !tbaa !12
  %212 = tail call i64 @aead_random_generate_64() #2
  %213 = load i64, ptr %0, align 8, !tbaa !10
  %214 = xor i64 %213, %212
  store i64 %214, ptr %0, align 8, !tbaa !10
  %215 = and i64 %103, %44
  %216 = load i64, ptr %.sroa.26318.0..sroa_idx, align 8, !tbaa !13
  %217 = and i64 %101, %77
  %218 = xor i64 %215, %217
  %219 = xor i64 %218, %216
  %220 = xor i64 %219, %212
  store i64 %220, ptr %.sroa.26318.0..sroa_idx, align 8, !tbaa !13
  %221 = tail call i64 @aead_random_generate_64() #2
  %222 = load i64, ptr %0, align 8, !tbaa !10
  %223 = xor i64 %222, %221
  store i64 %223, ptr %0, align 8, !tbaa !10
  %224 = and i64 %104, %44
  %225 = load i64, ptr %.sroa.36329.0..sroa_idx, align 8, !tbaa !14
  %226 = and i64 %92, %101
  %227 = xor i64 %226, %224
  %228 = xor i64 %227, %225
  %229 = xor i64 %228, %221
  store i64 %229, ptr %.sroa.36329.0..sroa_idx, align 8, !tbaa !14
  %230 = and i64 %102, %62
  %231 = load i64, ptr %.sroa.16307.0..sroa_idx, align 8, !tbaa !12
  %232 = xor i64 %231, %230
  store i64 %232, ptr %.sroa.16307.0..sroa_idx, align 8, !tbaa !12
  %233 = tail call i64 @aead_random_generate_64() #2
  %234 = load i64, ptr %.sroa.16307.0..sroa_idx, align 8, !tbaa !12
  %235 = xor i64 %234, %233
  store i64 %235, ptr %.sroa.16307.0..sroa_idx, align 8, !tbaa !12
  %236 = and i64 %103, %62
  %237 = load i64, ptr %.sroa.26318.0..sroa_idx, align 8, !tbaa !13
  %238 = and i64 %102, %77
  %239 = xor i64 %236, %238
  %240 = xor i64 %239, %237
  %241 = xor i64 %240, %233
  store i64 %241, ptr %.sroa.26318.0..sroa_idx, align 8, !tbaa !13
  %242 = tail call i64 @aead_random_generate_64() #2
  %243 = load i64, ptr %.sroa.16307.0..sroa_idx, align 8, !tbaa !12
  %244 = xor i64 %243, %242
  store i64 %244, ptr %.sroa.16307.0..sroa_idx, align 8, !tbaa !12
  %245 = and i64 %104, %62
  %246 = load i64, ptr %.sroa.36329.0..sroa_idx, align 8, !tbaa !14
  %247 = and i64 %92, %102
  %248 = xor i64 %247, %245
  %249 = xor i64 %248, %246
  %250 = xor i64 %249, %242
  store i64 %250, ptr %.sroa.36329.0..sroa_idx, align 8, !tbaa !14
  %251 = and i64 %103, %77
  %252 = load i64, ptr %.sroa.26318.0..sroa_idx, align 8, !tbaa !13
  %253 = xor i64 %252, %251
  store i64 %253, ptr %.sroa.26318.0..sroa_idx, align 8, !tbaa !13
  %254 = tail call i64 @aead_random_generate_64() #2
  %255 = load i64, ptr %.sroa.26318.0..sroa_idx, align 8, !tbaa !13
  %256 = xor i64 %255, %254
  store i64 %256, ptr %.sroa.26318.0..sroa_idx, align 8, !tbaa !13
  %257 = and i64 %104, %77
  %258 = load i64, ptr %.sroa.36329.0..sroa_idx, align 8, !tbaa !14
  %259 = and i64 %92, %103
  %260 = and i64 %92, %104
  %261 = xor i64 %259, %257
  %262 = xor i64 %261, %260
  %263 = xor i64 %262, %258
  %264 = xor i64 %263, %254
  store i64 %264, ptr %.sroa.36329.0..sroa_idx, align 8, !tbaa !14
  %265 = and i64 %193, %130
  %266 = xor i64 %265, %44
  %267 = tail call i64 @aead_random_generate_64() #2
  %268 = xor i64 %266, %267
  %269 = and i64 %196, %130
  %270 = and i64 %193, %155
  %271 = tail call i64 @aead_random_generate_64() #2
  %272 = xor i64 %268, %271
  %273 = and i64 %198, %130
  %274 = tail call i64 @aead_random_generate_64() #2
  %275 = xor i64 %272, %274
  %276 = and i64 %200, %130
  %277 = and i64 %196, %155
  %278 = tail call i64 @aead_random_generate_64() #2
  %279 = and i64 %198, %155
  %280 = tail call i64 @aead_random_generate_64() #2
  %281 = xor i64 %270, %269
  %282 = xor i64 %281, %277
  %283 = xor i64 %282, %62
  %284 = xor i64 %283, %267
  %285 = xor i64 %284, %278
  %286 = xor i64 %285, %280
  %287 = and i64 %200, %155
  %288 = and i64 %198, %173
  %289 = tail call i64 @aead_random_generate_64() #2
  %290 = xor i64 %193, %196
  %291 = and i64 %290, %173
  %292 = xor i64 %291, %273
  %293 = xor i64 %292, %279
  %294 = xor i64 %293, %288
  %295 = xor i64 %294, %77
  %296 = xor i64 %295, %271
  %297 = xor i64 %296, %278
  %298 = xor i64 %297, %289
  %299 = and i64 %200, %173
  %300 = and i64 %200, %190
  %301 = xor i64 %290, %198
  %302 = and i64 %190, %301
  %303 = xor i64 %302, %299
  %304 = xor i64 %303, %276
  %305 = xor i64 %304, %287
  %306 = xor i64 %305, %300
  %307 = xor i64 %306, %92
  %308 = xor i64 %307, %274
  %309 = xor i64 %308, %280
  %310 = xor i64 %309, %289
  %.sroa.0124.0.copyload = load i32, ptr %12, align 8, !tbaa !15
  %.sroa.16.0.copyload = load i32, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !15
  %.sroa.26.0.copyload = load i32, ptr %.sroa.26.0..sroa_idx, align 8, !tbaa !15
  %.sroa.36.0.copyload = load i32, ptr %.sroa.36.0..sroa_idx, align 4, !tbaa !15
  %311 = xor i32 %.sroa.0124.0.copyload, -1
  %.sroa.084.0.copyload = load i32, ptr %13, align 8, !tbaa !15
  %.sroa.17.0.copyload = load i32, ptr %.sroa.17.0..sroa_idx, align 4, !tbaa !15
  %.sroa.30.0.copyload = load i32, ptr %.sroa.30.0..sroa_idx, align 8, !tbaa !15
  %.sroa.43.0.copyload = load i32, ptr %.sroa.43.0..sroa_idx, align 4, !tbaa !15
  %312 = load i32, ptr %14, align 8, !tbaa !17
  %313 = and i32 %312, %311
  %314 = xor i32 %313, %.sroa.084.0.copyload
  %315 = tail call i32 @aead_random_generate_32() #2
  %316 = xor i32 %314, %315
  %317 = load i32, ptr %14, align 8, !tbaa !17
  %318 = and i32 %317, %.sroa.16.0.copyload
  %319 = load i32, ptr %15, align 4, !tbaa !19
  %320 = and i32 %319, %311
  %321 = tail call i32 @aead_random_generate_32() #2
  %322 = xor i32 %316, %321
  %323 = load i32, ptr %14, align 8, !tbaa !17
  %324 = and i32 %323, %.sroa.26.0.copyload
  %325 = load i32, ptr %16, align 8, !tbaa !20
  %326 = and i32 %325, %311
  %327 = tail call i32 @aead_random_generate_32() #2
  %328 = xor i32 %322, %327
  %329 = load i32, ptr %14, align 8, !tbaa !17
  %330 = and i32 %329, %.sroa.36.0.copyload
  %331 = load i32, ptr %17, align 4, !tbaa !21
  %332 = and i32 %331, %311
  %333 = load i32, ptr %15, align 4, !tbaa !19
  %334 = and i32 %333, %.sroa.16.0.copyload
  %335 = tail call i32 @aead_random_generate_32() #2
  %336 = load i32, ptr %15, align 4, !tbaa !19
  %337 = and i32 %336, %.sroa.26.0.copyload
  %338 = load i32, ptr %16, align 8, !tbaa !20
  %339 = and i32 %338, %.sroa.16.0.copyload
  %340 = tail call i32 @aead_random_generate_32() #2
  %341 = xor i32 %.sroa.17.0.copyload, %318
  %342 = xor i32 %341, %320
  %343 = xor i32 %342, %334
  %344 = xor i32 %343, %315
  %345 = xor i32 %344, %335
  %346 = xor i32 %345, %340
  %347 = load i32, ptr %15, align 4, !tbaa !19
  %348 = and i32 %347, %.sroa.36.0.copyload
  %349 = load i32, ptr %17, align 4, !tbaa !21
  %350 = and i32 %349, %.sroa.16.0.copyload
  %351 = load i32, ptr %16, align 8, !tbaa !20
  %352 = and i32 %351, %.sroa.26.0.copyload
  %353 = tail call i32 @aead_random_generate_32() #2
  %354 = xor i32 %.sroa.30.0.copyload, %324
  %355 = xor i32 %354, %326
  %356 = xor i32 %355, %337
  %357 = xor i32 %356, %339
  %358 = xor i32 %357, %352
  %359 = xor i32 %358, %321
  %360 = xor i32 %359, %335
  %361 = xor i32 %360, %353
  %362 = load i32, ptr %16, align 8, !tbaa !20
  %363 = and i32 %362, %.sroa.36.0.copyload
  %364 = load i32, ptr %17, align 4, !tbaa !21
  %365 = and i32 %364, %.sroa.26.0.copyload
  %366 = and i32 %364, %.sroa.36.0.copyload
  %367 = xor i32 %.sroa.43.0.copyload, %330
  %368 = xor i32 %367, %332
  %369 = xor i32 %368, %348
  %370 = xor i32 %369, %350
  %371 = xor i32 %370, %363
  %372 = xor i32 %371, %365
  %373 = xor i32 %372, %366
  %374 = xor i32 %373, %327
  %375 = xor i32 %374, %340
  %376 = xor i32 %375, %353
  %377 = load i32, ptr %18, align 8, !tbaa !17
  %378 = xor i32 %377, %328
  %379 = load i32, ptr %19, align 4, !tbaa !19
  %380 = xor i32 %379, %346
  %381 = load i32, ptr %20, align 8, !tbaa !20
  %382 = xor i32 %381, %361
  %383 = load i32, ptr %21, align 4, !tbaa !21
  %384 = xor i32 %376, %383
  %385 = xor i32 %377, %311
  %386 = xor i32 %379, %.sroa.16.0.copyload
  %387 = xor i32 %381, %.sroa.26.0.copyload
  %388 = xor i32 %383, %.sroa.36.0.copyload
  %389 = load i32, ptr %14, align 8, !tbaa !17
  %390 = load i32, ptr %13, align 8, !tbaa !17
  %391 = or i32 %390, %389
  %392 = xor i32 %391, %385
  %393 = tail call i32 @aead_random_generate_32() #2
  %394 = xor i32 %392, %393
  %395 = load i32, ptr %.sroa.17.0..sroa_idx, align 4, !tbaa !19
  %396 = load i32, ptr %14, align 8, !tbaa !17
  %397 = xor i32 %396, -1
  %398 = and i32 %395, %397
  %399 = load i32, ptr %15, align 4, !tbaa !19
  %400 = load i32, ptr %13, align 8, !tbaa !17
  %401 = xor i32 %400, -1
  %402 = and i32 %399, %401
  %403 = tail call i32 @aead_random_generate_32() #2
  %404 = xor i32 %394, %403
  %405 = load i32, ptr %.sroa.30.0..sroa_idx, align 8, !tbaa !20
  %406 = load i32, ptr %14, align 8, !tbaa !17
  %407 = xor i32 %406, -1
  %408 = and i32 %405, %407
  %409 = load i32, ptr %16, align 8, !tbaa !20
  %410 = load i32, ptr %13, align 8, !tbaa !17
  %411 = xor i32 %410, -1
  %412 = and i32 %409, %411
  %413 = tail call i32 @aead_random_generate_32() #2
  %414 = xor i32 %404, %413
  %415 = load i32, ptr %.sroa.43.0..sroa_idx, align 4, !tbaa !21
  %416 = load i32, ptr %14, align 8, !tbaa !17
  %417 = xor i32 %416, -1
  %418 = and i32 %415, %417
  %419 = load i32, ptr %17, align 4, !tbaa !21
  %420 = load i32, ptr %13, align 8, !tbaa !17
  %421 = xor i32 %420, -1
  %422 = and i32 %419, %421
  %423 = load i32, ptr %15, align 4, !tbaa !19
  %424 = load i32, ptr %.sroa.17.0..sroa_idx, align 4, !tbaa !19
  %425 = and i32 %424, %423
  %426 = tail call i32 @aead_random_generate_32() #2
  %427 = load i32, ptr %.sroa.30.0..sroa_idx, align 8, !tbaa !20
  %428 = load i32, ptr %15, align 4, !tbaa !19
  %429 = and i32 %428, %427
  %430 = load i32, ptr %16, align 8, !tbaa !20
  %431 = load i32, ptr %.sroa.17.0..sroa_idx, align 4, !tbaa !19
  %432 = and i32 %431, %430
  %433 = tail call i32 @aead_random_generate_32() #2
  %434 = xor i32 %398, %402
  %435 = xor i32 %434, %425
  %436 = xor i32 %435, %386
  %437 = xor i32 %436, %393
  %438 = xor i32 %437, %426
  %439 = xor i32 %438, %433
  %440 = load i32, ptr %.sroa.43.0..sroa_idx, align 4, !tbaa !21
  %441 = load i32, ptr %15, align 4, !tbaa !19
  %442 = and i32 %441, %440
  %443 = load i32, ptr %17, align 4, !tbaa !21
  %444 = load i32, ptr %.sroa.17.0..sroa_idx, align 4, !tbaa !19
  %445 = and i32 %444, %443
  %446 = load i32, ptr %16, align 8, !tbaa !20
  %447 = load i32, ptr %.sroa.30.0..sroa_idx, align 8, !tbaa !20
  %448 = and i32 %447, %446
  %449 = tail call i32 @aead_random_generate_32() #2
  %450 = xor i32 %408, %412
  %451 = xor i32 %450, %429
  %452 = xor i32 %451, %432
  %453 = xor i32 %452, %448
  %454 = xor i32 %453, %387
  %455 = xor i32 %454, %403
  %456 = xor i32 %455, %426
  %457 = xor i32 %456, %449
  %458 = load i32, ptr %.sroa.43.0..sroa_idx, align 4, !tbaa !21
  %459 = load i32, ptr %16, align 8, !tbaa !20
  %460 = and i32 %459, %458
  %461 = load i32, ptr %17, align 4, !tbaa !21
  %462 = load i32, ptr %.sroa.30.0..sroa_idx, align 8, !tbaa !20
  %463 = and i32 %462, %461
  %464 = and i32 %461, %458
  %465 = xor i32 %418, %422
  %466 = xor i32 %465, %442
  %467 = xor i32 %466, %445
  %468 = xor i32 %467, %460
  %469 = xor i32 %468, %464
  %470 = xor i32 %469, %463
  %471 = xor i32 %470, %388
  %472 = xor i32 %471, %413
  %473 = xor i32 %472, %433
  %474 = xor i32 %473, %449
  %475 = load i32, ptr %14, align 8, !tbaa !17
  %476 = load i32, ptr %18, align 8, !tbaa !17
  %477 = xor i32 %476, %475
  %478 = load i32, ptr %15, align 4, !tbaa !19
  %479 = load i32, ptr %19, align 4, !tbaa !19
  %480 = xor i32 %479, %478
  %481 = load i32, ptr %20, align 8, !tbaa !20
  %482 = xor i32 %481, %459
  %483 = load i32, ptr %21, align 4, !tbaa !21
  %484 = xor i32 %483, %461
  store i32 %480, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !15
  store i32 %482, ptr %.sroa.26.0..sroa_idx, align 8, !tbaa !15
  store i32 %484, ptr %.sroa.36.0..sroa_idx, align 4, !tbaa !15
  %485 = and i32 %385, %328
  %486 = xor i32 %477, %485
  store i32 %486, ptr %12, align 8, !tbaa !17
  %487 = tail call i32 @aead_random_generate_32() #2
  %488 = load i32, ptr %12, align 8, !tbaa !17
  %489 = xor i32 %488, %487
  store i32 %489, ptr %12, align 8, !tbaa !17
  %490 = and i32 %386, %328
  %491 = load i32, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !19
  %492 = and i32 %385, %346
  %493 = xor i32 %490, %492
  %494 = xor i32 %493, %491
  %495 = xor i32 %494, %487
  store i32 %495, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !19
  %496 = tail call i32 @aead_random_generate_32() #2
  %497 = load i32, ptr %12, align 8, !tbaa !17
  %498 = xor i32 %497, %496
  store i32 %498, ptr %12, align 8, !tbaa !17
  %499 = and i32 %387, %328
  %500 = load i32, ptr %.sroa.26.0..sroa_idx, align 8, !tbaa !20
  %501 = and i32 %385, %361
  %502 = xor i32 %499, %501
  %503 = xor i32 %502, %500
  %504 = xor i32 %503, %496
  store i32 %504, ptr %.sroa.26.0..sroa_idx, align 8, !tbaa !20
  %505 = tail call i32 @aead_random_generate_32() #2
  %506 = load i32, ptr %12, align 8, !tbaa !17
  %507 = xor i32 %506, %505
  store i32 %507, ptr %12, align 8, !tbaa !17
  %508 = and i32 %388, %328
  %509 = load i32, ptr %.sroa.36.0..sroa_idx, align 4, !tbaa !21
  %510 = and i32 %376, %385
  %511 = xor i32 %510, %508
  %512 = xor i32 %511, %509
  %513 = xor i32 %512, %505
  store i32 %513, ptr %.sroa.36.0..sroa_idx, align 4, !tbaa !21
  %514 = and i32 %386, %346
  %515 = load i32, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !19
  %516 = xor i32 %515, %514
  store i32 %516, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !19
  %517 = tail call i32 @aead_random_generate_32() #2
  %518 = load i32, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !19
  %519 = xor i32 %518, %517
  store i32 %519, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !19
  %520 = and i32 %387, %346
  %521 = load i32, ptr %.sroa.26.0..sroa_idx, align 8, !tbaa !20
  %522 = and i32 %386, %361
  %523 = xor i32 %520, %522
  %524 = xor i32 %523, %521
  %525 = xor i32 %524, %517
  store i32 %525, ptr %.sroa.26.0..sroa_idx, align 8, !tbaa !20
  %526 = tail call i32 @aead_random_generate_32() #2
  %527 = load i32, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !19
  %528 = xor i32 %527, %526
  store i32 %528, ptr %.sroa.16.0..sroa_idx, align 4, !tbaa !19
  %529 = and i32 %388, %346
  %530 = load i32, ptr %.sroa.36.0..sroa_idx, align 4, !tbaa !21
  %531 = and i32 %376, %386
  %532 = xor i32 %531, %529
  %533 = xor i32 %532, %530
  %534 = xor i32 %533, %526
  store i32 %534, ptr %.sroa.36.0..sroa_idx, align 4, !tbaa !21
  %535 = and i32 %387, %361
  %536 = load i32, ptr %.sroa.26.0..sroa_idx, align 8, !tbaa !20
  %537 = xor i32 %536, %535
  store i32 %537, ptr %.sroa.26.0..sroa_idx, align 8, !tbaa !20
  %538 = tail call i32 @aead_random_generate_32() #2
  %539 = load i32, ptr %.sroa.26.0..sroa_idx, align 8, !tbaa !20
  %540 = xor i32 %539, %538
  store i32 %540, ptr %.sroa.26.0..sroa_idx, align 8, !tbaa !20
  %541 = and i32 %388, %361
  %542 = load i32, ptr %.sroa.36.0..sroa_idx, align 4, !tbaa !21
  %543 = and i32 %376, %387
  %544 = and i32 %376, %388
  %545 = xor i32 %543, %541
  %546 = xor i32 %545, %544
  %547 = xor i32 %546, %542
  %548 = xor i32 %547, %538
  store i32 %548, ptr %.sroa.36.0..sroa_idx, align 4, !tbaa !21
  %549 = and i32 %477, %414
  %550 = xor i32 %549, %328
  %551 = tail call i32 @aead_random_generate_32() #2
  %552 = xor i32 %550, %551
  %553 = and i32 %480, %414
  %554 = and i32 %477, %439
  %555 = tail call i32 @aead_random_generate_32() #2
  %556 = xor i32 %552, %555
  %557 = and i32 %482, %414
  %558 = tail call i32 @aead_random_generate_32() #2
  %559 = xor i32 %556, %558
  %560 = and i32 %484, %414
  %561 = and i32 %480, %439
  %562 = tail call i32 @aead_random_generate_32() #2
  %563 = and i32 %482, %439
  %564 = tail call i32 @aead_random_generate_32() #2
  %565 = xor i32 %554, %553
  %566 = xor i32 %565, %561
  %567 = xor i32 %566, %346
  %568 = xor i32 %567, %551
  %569 = xor i32 %568, %562
  %570 = xor i32 %569, %564
  %571 = and i32 %484, %439
  %572 = and i32 %482, %457
  %573 = tail call i32 @aead_random_generate_32() #2
  %574 = xor i32 %477, %480
  %575 = and i32 %574, %457
  %576 = xor i32 %575, %557
  %577 = xor i32 %576, %563
  %578 = xor i32 %577, %572
  %579 = xor i32 %578, %361
  %580 = xor i32 %579, %555
  %581 = xor i32 %580, %562
  %582 = xor i32 %581, %573
  %583 = and i32 %484, %457
  %584 = and i32 %484, %474
  %585 = xor i32 %574, %482
  %586 = and i32 %474, %585
  %587 = xor i32 %586, %583
  %588 = xor i32 %587, %560
  %589 = xor i32 %588, %571
  %590 = xor i32 %589, %584
  %591 = xor i32 %590, %376
  %592 = xor i32 %591, %558
  %593 = xor i32 %592, %564
  %594 = xor i32 %593, %573
  %595 = shl i64 %275, 1
  %596 = lshr i32 %559, 31
  %597 = zext nneg i32 %596 to i64
  %598 = or disjoint i64 %595, %597
  store i64 %598, ptr %4, align 8, !tbaa !10
  %599 = shl i32 %559, 1
  %600 = lshr i64 %275, 63
  %601 = trunc nuw nsw i64 %600 to i32
  %602 = or disjoint i32 %599, %601
  store i32 %602, ptr %14, align 8, !tbaa !17
  %603 = shl i64 %286, 1
  %604 = lshr i32 %570, 31
  %605 = zext nneg i32 %604 to i64
  %606 = or disjoint i64 %603, %605
  store i64 %606, ptr %5, align 8, !tbaa !12
  %607 = shl i32 %570, 1
  %608 = lshr i64 %286, 63
  %609 = trunc nuw nsw i64 %608 to i32
  %610 = or disjoint i32 %607, %609
  store i32 %610, ptr %15, align 4, !tbaa !19
  %611 = shl i64 %298, 1
  %612 = lshr i32 %582, 31
  %613 = zext nneg i32 %612 to i64
  %614 = or disjoint i64 %611, %613
  store i64 %614, ptr %6, align 8, !tbaa !13
  %615 = shl i32 %582, 1
  %616 = lshr i64 %298, 63
  %617 = trunc nuw nsw i64 %616 to i32
  %618 = or disjoint i32 %615, %617
  store i32 %618, ptr %16, align 8, !tbaa !20
  %619 = shl i64 %310, 1
  %620 = lshr i32 %594, 31
  %621 = zext nneg i32 %620 to i64
  %622 = or disjoint i64 %619, %621
  store i64 %622, ptr %7, align 8, !tbaa !14
  %623 = shl i32 %594, 1
  %624 = lshr i64 %310, 63
  %625 = trunc nuw nsw i64 %624 to i32
  %626 = or disjoint i32 %623, %625
  store i32 %626, ptr %17, align 4, !tbaa !21
  %627 = shl i64 %130, 8
  %628 = lshr i32 %414, 24
  %629 = zext nneg i32 %628 to i64
  %630 = or disjoint i64 %627, %629
  store i64 %630, ptr %3, align 8, !tbaa !10
  %631 = shl i32 %414, 8
  %632 = lshr i64 %130, 56
  %633 = trunc nuw nsw i64 %632 to i32
  %634 = or disjoint i32 %631, %633
  store i32 %634, ptr %13, align 8, !tbaa !17
  %635 = shl i64 %155, 8
  %636 = lshr i32 %439, 24
  %637 = zext nneg i32 %636 to i64
  %638 = or disjoint i64 %635, %637
  store i64 %638, ptr %.sroa.17263.0..sroa_idx, align 8, !tbaa !12
  %639 = shl i32 %439, 8
  %640 = lshr i64 %155, 56
  %641 = trunc nuw nsw i64 %640 to i32
  %642 = or disjoint i32 %639, %641
  store i32 %642, ptr %.sroa.17.0..sroa_idx, align 4, !tbaa !19
  %643 = shl i64 %173, 8
  %644 = lshr i32 %457, 24
  %645 = zext nneg i32 %644 to i64
  %646 = or disjoint i64 %643, %645
  store i64 %646, ptr %.sroa.30274.0..sroa_idx, align 8, !tbaa !13
  %647 = shl i32 %457, 8
  %648 = lshr i64 %173, 56
  %649 = trunc nuw nsw i64 %648 to i32
  %650 = or disjoint i32 %647, %649
  store i32 %650, ptr %.sroa.30.0..sroa_idx, align 8, !tbaa !20
  %651 = shl i64 %190, 8
  %652 = lshr i32 %474, 24
  %653 = zext nneg i32 %652 to i64
  %654 = or disjoint i64 %651, %653
  store i64 %654, ptr %.sroa.43285.0..sroa_idx, align 8, !tbaa !14
  %655 = shl i32 %474, 8
  %656 = lshr i64 %190, 56
  %657 = trunc nuw nsw i64 %656 to i32
  %658 = or disjoint i32 %655, %657
  store i32 %658, ptr %.sroa.43.0..sroa_idx, align 4, !tbaa !21
  %659 = shl i64 %94, 55
  %660 = zext i32 %378 to i64
  %661 = shl nuw nsw i64 %660, 23
  %662 = or disjoint i64 %661, %659
  %663 = lshr i64 %94, 41
  %664 = or disjoint i64 %662, %663
  store i64 %664, ptr %8, align 8, !tbaa !10
  %665 = lshr i64 %94, 9
  %666 = trunc i64 %665 to i32
  store i32 %666, ptr %18, align 8, !tbaa !17
  %667 = shl i64 %96, 55
  %668 = zext i32 %380 to i64
  %669 = shl nuw nsw i64 %668, 23
  %670 = or disjoint i64 %669, %667
  %671 = lshr i64 %96, 41
  %672 = or disjoint i64 %670, %671
  store i64 %672, ptr %9, align 8, !tbaa !12
  %673 = lshr i64 %96, 9
  %674 = trunc i64 %673 to i32
  store i32 %674, ptr %19, align 4, !tbaa !19
  %675 = shl i64 %98, 55
  %676 = zext i32 %382 to i64
  %677 = shl nuw nsw i64 %676, 23
  %678 = or disjoint i64 %677, %675
  %679 = lshr i64 %98, 41
  %680 = or disjoint i64 %678, %679
  store i64 %680, ptr %10, align 8, !tbaa !13
  %681 = lshr i64 %98, 9
  %682 = trunc i64 %681 to i32
  store i32 %682, ptr %20, align 8, !tbaa !20
  %683 = shl i64 %100, 55
  %684 = zext i32 %384 to i64
  %685 = shl nuw nsw i64 %684, 23
  %686 = or disjoint i64 %685, %683
  %687 = lshr i64 %100, 41
  %688 = or disjoint i64 %686, %687
  store i64 %688, ptr %11, align 8, !tbaa !14
  %689 = lshr i64 %100, 9
  %690 = trunc i64 %689 to i32
  store i32 %690, ptr %21, align 4, !tbaa !21
  %691 = add i8 %.0685, -1
  %692 = getelementptr inbounds i8, ptr %.0682684, i64 1
  %.not = icmp eq i8 %691, 0
  br i1 %.not, label %._crit_edge, label %22, !llvm.loop !22

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

declare i32 @aead_random_generate_32() local_unnamed_addr #0

attributes #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 = { 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 #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 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !6, i64 0}
!11 = !{!"", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!12 = !{!11, !6, i64 8}
!13 = !{!11, !6, i64 16}
!14 = !{!11, !6, i64 24}
!15 = !{!16, !16, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!18, !16, i64 0}
!18 = !{!"", !16, i64 0, !16, i64 4, !16, i64 8, !16, i64 12}
!19 = !{!18, !16, i64 4}
!20 = !{!18, !16, i64 8}
!21 = !{!18, !16, i64 12}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass