; LLVM IR from rweather/lightweight-crypto :: src/combined (internal-pyjamask-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_uint32_t = type { i32, i32, i32, i32 }
%struct.pyjamask_masked_96_key_schedule_t = type { [45 x %struct.mask_x4_uint32_t] }

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

declare i32 @aead_random_generate_32() #1

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

; Function Attrs: nounwind uwtable
declare hidden void @pyjamask_matrix_multiply_masked_a3861085(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @pyjamask_matrix_multiply_masked_63417021(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare hidden void @pyjamask_matrix_multiply_masked_692cf280(ptr noundef) #2

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

19:                                               ; preds = %3
  %20 = call i32 @aead_random_generate_32()
  %21 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  store i32 %20, ptr %21, align 4, !tbaa !9
  %22 = call i32 @aead_random_generate_32()
  %23 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  store i32 %22, ptr %23, align 4, !tbaa !12
  %24 = call i32 @aead_random_generate_32()
  %25 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  store i32 %24, ptr %25, align 4, !tbaa !13
  %26 = load ptr, ptr %6, align 8, !tbaa !5
  %27 = getelementptr inbounds i8, ptr %26, i64 0
  %28 = load i8, ptr %27, align 1, !tbaa !14
  %29 = zext i8 %28 to i32
  %30 = shl i32 %29, 24
  %31 = load ptr, ptr %6, align 8, !tbaa !5
  %32 = getelementptr inbounds i8, ptr %31, i64 1
  %33 = load i8, ptr %32, align 1, !tbaa !14
  %34 = zext i8 %33 to i32
  %35 = shl i32 %34, 16
  %36 = or i32 %30, %35
  %37 = load ptr, ptr %6, align 8, !tbaa !5
  %38 = getelementptr inbounds i8, ptr %37, i64 2
  %39 = load i8, ptr %38, align 1, !tbaa !14
  %40 = zext i8 %39 to i32
  %41 = shl i32 %40, 8
  %42 = or i32 %36, %41
  %43 = load ptr, ptr %6, align 8, !tbaa !5
  %44 = getelementptr inbounds i8, ptr %43, i64 3
  %45 = load i8, ptr %44, align 1, !tbaa !14
  %46 = zext i8 %45 to i32
  %47 = or i32 %42, %46
  %48 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %49 = load i32, ptr %48, align 4, !tbaa !9
  %50 = xor i32 %47, %49
  %51 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %52 = load i32, ptr %51, align 4, !tbaa !12
  %53 = xor i32 %50, %52
  %54 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %55 = load i32, ptr %54, align 4, !tbaa !13
  %56 = xor i32 %53, %55
  %57 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  store i32 %56, ptr %57, align 4, !tbaa !15
  br label %58

58:                                               ; preds = %19
  br label %59

59:                                               ; preds = %58
  br label %60

60:                                               ; preds = %59
  %61 = call i32 @aead_random_generate_32()
  %62 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  store i32 %61, ptr %62, align 4, !tbaa !9
  %63 = call i32 @aead_random_generate_32()
  %64 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  store i32 %63, ptr %64, align 4, !tbaa !12
  %65 = call i32 @aead_random_generate_32()
  %66 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  store i32 %65, ptr %66, align 4, !tbaa !13
  %67 = load ptr, ptr %6, align 8, !tbaa !5
  %68 = getelementptr inbounds i8, ptr %67, i64 4
  %69 = getelementptr inbounds i8, ptr %68, i64 0
  %70 = load i8, ptr %69, align 1, !tbaa !14
  %71 = zext i8 %70 to i32
  %72 = shl i32 %71, 24
  %73 = load ptr, ptr %6, align 8, !tbaa !5
  %74 = getelementptr inbounds i8, ptr %73, i64 4
  %75 = getelementptr inbounds i8, ptr %74, i64 1
  %76 = load i8, ptr %75, align 1, !tbaa !14
  %77 = zext i8 %76 to i32
  %78 = shl i32 %77, 16
  %79 = or i32 %72, %78
  %80 = load ptr, ptr %6, align 8, !tbaa !5
  %81 = getelementptr inbounds i8, ptr %80, i64 4
  %82 = getelementptr inbounds i8, ptr %81, i64 2
  %83 = load i8, ptr %82, align 1, !tbaa !14
  %84 = zext i8 %83 to i32
  %85 = shl i32 %84, 8
  %86 = or i32 %79, %85
  %87 = load ptr, ptr %6, align 8, !tbaa !5
  %88 = getelementptr inbounds i8, ptr %87, i64 4
  %89 = getelementptr inbounds i8, ptr %88, i64 3
  %90 = load i8, ptr %89, align 1, !tbaa !14
  %91 = zext i8 %90 to i32
  %92 = or i32 %86, %91
  %93 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %94 = load i32, ptr %93, align 4, !tbaa !9
  %95 = xor i32 %92, %94
  %96 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %97 = load i32, ptr %96, align 4, !tbaa !12
  %98 = xor i32 %95, %97
  %99 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %100 = load i32, ptr %99, align 4, !tbaa !13
  %101 = xor i32 %98, %100
  %102 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  store i32 %101, ptr %102, align 4, !tbaa !15
  br label %103

103:                                              ; preds = %60
  br label %104

104:                                              ; preds = %103
  br label %105

105:                                              ; preds = %104
  %106 = call i32 @aead_random_generate_32()
  %107 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  store i32 %106, ptr %107, align 4, !tbaa !9
  %108 = call i32 @aead_random_generate_32()
  %109 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  store i32 %108, ptr %109, align 4, !tbaa !12
  %110 = call i32 @aead_random_generate_32()
  %111 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  store i32 %110, ptr %111, align 4, !tbaa !13
  %112 = load ptr, ptr %6, align 8, !tbaa !5
  %113 = getelementptr inbounds i8, ptr %112, i64 8
  %114 = getelementptr inbounds i8, ptr %113, i64 0
  %115 = load i8, ptr %114, align 1, !tbaa !14
  %116 = zext i8 %115 to i32
  %117 = shl i32 %116, 24
  %118 = load ptr, ptr %6, align 8, !tbaa !5
  %119 = getelementptr inbounds i8, ptr %118, i64 8
  %120 = getelementptr inbounds i8, ptr %119, i64 1
  %121 = load i8, ptr %120, align 1, !tbaa !14
  %122 = zext i8 %121 to i32
  %123 = shl i32 %122, 16
  %124 = or i32 %117, %123
  %125 = load ptr, ptr %6, align 8, !tbaa !5
  %126 = getelementptr inbounds i8, ptr %125, i64 8
  %127 = getelementptr inbounds i8, ptr %126, i64 2
  %128 = load i8, ptr %127, align 1, !tbaa !14
  %129 = zext i8 %128 to i32
  %130 = shl i32 %129, 8
  %131 = or i32 %124, %130
  %132 = load ptr, ptr %6, align 8, !tbaa !5
  %133 = getelementptr inbounds i8, ptr %132, i64 8
  %134 = getelementptr inbounds i8, ptr %133, i64 3
  %135 = load i8, ptr %134, align 1, !tbaa !14
  %136 = zext i8 %135 to i32
  %137 = or i32 %131, %136
  %138 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %139 = load i32, ptr %138, align 4, !tbaa !9
  %140 = xor i32 %137, %139
  %141 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %142 = load i32, ptr %141, align 4, !tbaa !12
  %143 = xor i32 %140, %142
  %144 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %145 = load i32, ptr %144, align 4, !tbaa !13
  %146 = xor i32 %143, %145
  %147 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  store i32 %146, ptr %147, align 4, !tbaa !15
  br label %148

148:                                              ; preds = %105
  br label %149

149:                                              ; preds = %148
  store i8 0, ptr %12, align 1, !tbaa !14
  br label %150

150:                                              ; preds = %943, %149
  %151 = load i8, ptr %12, align 1, !tbaa !14
  %152 = zext i8 %151 to i32
  %153 = icmp slt i32 %152, 14
  br i1 %153, label %154, label %948

154:                                              ; preds = %150
  br label %155

155:                                              ; preds = %154
  %156 = load ptr, ptr %7, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %156, i64 0
  %158 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %157, i32 0, i32 0
  %159 = load i32, ptr %158, align 4, !tbaa !15
  %160 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %161 = load i32, ptr %160, align 4, !tbaa !15
  %162 = xor i32 %161, %159
  store i32 %162, ptr %160, align 4, !tbaa !15
  %163 = load ptr, ptr %7, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %163, i64 0
  %165 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %164, i32 0, i32 1
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = xor i32 %168, %166
  store i32 %169, ptr %167, align 4, !tbaa !9
  %170 = load ptr, ptr %7, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %170, i64 0
  %172 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %171, i32 0, i32 2
  %173 = load i32, ptr %172, align 4, !tbaa !12
  %174 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %175 = load i32, ptr %174, align 4, !tbaa !12
  %176 = xor i32 %175, %173
  store i32 %176, ptr %174, align 4, !tbaa !12
  %177 = load ptr, ptr %7, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %177, i64 0
  %179 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %178, i32 0, i32 3
  %180 = load i32, ptr %179, align 4, !tbaa !13
  %181 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %182 = load i32, ptr %181, align 4, !tbaa !13
  %183 = xor i32 %182, %180
  store i32 %183, ptr %181, align 4, !tbaa !13
  br label %184

184:                                              ; preds = %155
  br label %185

185:                                              ; preds = %184
  br label %186

186:                                              ; preds = %185
  %187 = load ptr, ptr %7, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %187, i64 1
  %189 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %188, i32 0, i32 0
  %190 = load i32, ptr %189, align 4, !tbaa !15
  %191 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %192 = load i32, ptr %191, align 4, !tbaa !15
  %193 = xor i32 %192, %190
  store i32 %193, ptr %191, align 4, !tbaa !15
  %194 = load ptr, ptr %7, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %194, i64 1
  %196 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %195, i32 0, i32 1
  %197 = load i32, ptr %196, align 4, !tbaa !9
  %198 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = xor i32 %199, %197
  store i32 %200, ptr %198, align 4, !tbaa !9
  %201 = load ptr, ptr %7, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %201, i64 1
  %203 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %202, i32 0, i32 2
  %204 = load i32, ptr %203, align 4, !tbaa !12
  %205 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %206 = load i32, ptr %205, align 4, !tbaa !12
  %207 = xor i32 %206, %204
  store i32 %207, ptr %205, align 4, !tbaa !12
  %208 = load ptr, ptr %7, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %208, i64 1
  %210 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %209, i32 0, i32 3
  %211 = load i32, ptr %210, align 4, !tbaa !13
  %212 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %213 = load i32, ptr %212, align 4, !tbaa !13
  %214 = xor i32 %213, %211
  store i32 %214, ptr %212, align 4, !tbaa !13
  br label %215

215:                                              ; preds = %186
  br label %216

216:                                              ; preds = %215
  br label %217

217:                                              ; preds = %216
  %218 = load ptr, ptr %7, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %218, i64 2
  %220 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %219, i32 0, i32 0
  %221 = load i32, ptr %220, align 4, !tbaa !15
  %222 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %223 = load i32, ptr %222, align 4, !tbaa !15
  %224 = xor i32 %223, %221
  store i32 %224, ptr %222, align 4, !tbaa !15
  %225 = load ptr, ptr %7, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %225, i64 2
  %227 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %226, i32 0, i32 1
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = xor i32 %230, %228
  store i32 %231, ptr %229, align 4, !tbaa !9
  %232 = load ptr, ptr %7, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %232, i64 2
  %234 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %233, i32 0, i32 2
  %235 = load i32, ptr %234, align 4, !tbaa !12
  %236 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %237 = load i32, ptr %236, align 4, !tbaa !12
  %238 = xor i32 %237, %235
  store i32 %238, ptr %236, align 4, !tbaa !12
  %239 = load ptr, ptr %7, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %239, i64 2
  %241 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %240, i32 0, i32 3
  %242 = load i32, ptr %241, align 4, !tbaa !13
  %243 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %244 = load i32, ptr %243, align 4, !tbaa !13
  %245 = xor i32 %244, %242
  store i32 %245, ptr %243, align 4, !tbaa !13
  br label %246

246:                                              ; preds = %217
  br label %247

247:                                              ; preds = %246
  br label %248

248:                                              ; preds = %247
  %249 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %250 = load i32, ptr %249, align 4, !tbaa !15
  %251 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %252 = load i32, ptr %251, align 4, !tbaa !15
  %253 = xor i32 %252, %250
  store i32 %253, ptr %251, align 4, !tbaa !15
  %254 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = xor i32 %257, %255
  store i32 %258, ptr %256, align 4, !tbaa !9
  %259 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %260 = load i32, ptr %259, align 4, !tbaa !12
  %261 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %262 = load i32, ptr %261, align 4, !tbaa !12
  %263 = xor i32 %262, %260
  store i32 %263, ptr %261, align 4, !tbaa !12
  %264 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %265 = load i32, ptr %264, align 4, !tbaa !13
  %266 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %267 = load i32, ptr %266, align 4, !tbaa !13
  %268 = xor i32 %267, %265
  store i32 %268, ptr %266, align 4, !tbaa !13
  br label %269

269:                                              ; preds = %248
  br label %270

270:                                              ; preds = %269
  br label %271

271:                                              ; preds = %270
  %272 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %273 = load i32, ptr %272, align 4, !tbaa !15
  %274 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %275 = load i32, ptr %274, align 4, !tbaa !15
  %276 = xor i32 %275, %273
  store i32 %276, ptr %274, align 4, !tbaa !15
  %277 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %280 = load i32, ptr %279, align 4, !tbaa !9
  %281 = xor i32 %280, %278
  store i32 %281, ptr %279, align 4, !tbaa !9
  %282 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %283 = load i32, ptr %282, align 4, !tbaa !12
  %284 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %285 = load i32, ptr %284, align 4, !tbaa !12
  %286 = xor i32 %285, %283
  store i32 %286, ptr %284, align 4, !tbaa !12
  %287 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %288 = load i32, ptr %287, align 4, !tbaa !13
  %289 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %290 = load i32, ptr %289, align 4, !tbaa !13
  %291 = xor i32 %290, %288
  store i32 %291, ptr %289, align 4, !tbaa !13
  br label %292

292:                                              ; preds = %271
  br label %293

293:                                              ; preds = %292
  br label %294

294:                                              ; preds = %293
  %295 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %296 = load i32, ptr %295, align 4, !tbaa !15
  %297 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %298 = load i32, ptr %297, align 4, !tbaa !15
  %299 = and i32 %296, %298
  %300 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %301 = load i32, ptr %300, align 4, !tbaa !15
  %302 = xor i32 %301, %299
  store i32 %302, ptr %300, align 4, !tbaa !15
  br label %303

303:                                              ; preds = %294
  %304 = call i32 @aead_random_generate_32()
  store i32 %304, ptr %11, align 4, !tbaa !16
  %305 = load i32, ptr %11, align 4, !tbaa !16
  %306 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %307 = load i32, ptr %306, align 4, !tbaa !15
  %308 = xor i32 %307, %305
  store i32 %308, ptr %306, align 4, !tbaa !15
  %309 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %310 = load i32, ptr %309, align 4, !tbaa !9
  %311 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %312 = load i32, ptr %311, align 4, !tbaa !15
  %313 = and i32 %310, %312
  %314 = load i32, ptr %11, align 4, !tbaa !16
  %315 = xor i32 %314, %313
  store i32 %315, ptr %11, align 4, !tbaa !16
  %316 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %317 = load i32, ptr %316, align 4, !tbaa !9
  %318 = load i32, ptr %11, align 4, !tbaa !16
  %319 = xor i32 %317, %318
  %320 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %321 = load i32, ptr %320, align 4, !tbaa !9
  %322 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %323 = load i32, ptr %322, align 4, !tbaa !15
  %324 = and i32 %321, %323
  %325 = xor i32 %319, %324
  %326 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  store i32 %325, ptr %326, align 4, !tbaa !9
  br label %327

327:                                              ; preds = %303
  br label %328

328:                                              ; preds = %327
  br label %329

329:                                              ; preds = %328
  %330 = call i32 @aead_random_generate_32()
  store i32 %330, ptr %11, align 4, !tbaa !16
  %331 = load i32, ptr %11, align 4, !tbaa !16
  %332 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %333 = load i32, ptr %332, align 4, !tbaa !15
  %334 = xor i32 %333, %331
  store i32 %334, ptr %332, align 4, !tbaa !15
  %335 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %336 = load i32, ptr %335, align 4, !tbaa !12
  %337 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %338 = load i32, ptr %337, align 4, !tbaa !15
  %339 = and i32 %336, %338
  %340 = load i32, ptr %11, align 4, !tbaa !16
  %341 = xor i32 %340, %339
  store i32 %341, ptr %11, align 4, !tbaa !16
  %342 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %343 = load i32, ptr %342, align 4, !tbaa !12
  %344 = load i32, ptr %11, align 4, !tbaa !16
  %345 = xor i32 %343, %344
  %346 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %347 = load i32, ptr %346, align 4, !tbaa !12
  %348 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %349 = load i32, ptr %348, align 4, !tbaa !15
  %350 = and i32 %347, %349
  %351 = xor i32 %345, %350
  %352 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  store i32 %351, ptr %352, align 4, !tbaa !12
  br label %353

353:                                              ; preds = %329
  br label %354

354:                                              ; preds = %353
  br label %355

355:                                              ; preds = %354
  %356 = call i32 @aead_random_generate_32()
  store i32 %356, ptr %11, align 4, !tbaa !16
  %357 = load i32, ptr %11, align 4, !tbaa !16
  %358 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %359 = load i32, ptr %358, align 4, !tbaa !15
  %360 = xor i32 %359, %357
  store i32 %360, ptr %358, align 4, !tbaa !15
  %361 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %362 = load i32, ptr %361, align 4, !tbaa !13
  %363 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %364 = load i32, ptr %363, align 4, !tbaa !15
  %365 = and i32 %362, %364
  %366 = load i32, ptr %11, align 4, !tbaa !16
  %367 = xor i32 %366, %365
  store i32 %367, ptr %11, align 4, !tbaa !16
  %368 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %369 = load i32, ptr %368, align 4, !tbaa !13
  %370 = load i32, ptr %11, align 4, !tbaa !16
  %371 = xor i32 %369, %370
  %372 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %373 = load i32, ptr %372, align 4, !tbaa !13
  %374 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %375 = load i32, ptr %374, align 4, !tbaa !15
  %376 = and i32 %373, %375
  %377 = xor i32 %371, %376
  %378 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  store i32 %377, ptr %378, align 4, !tbaa !13
  br label %379

379:                                              ; preds = %355
  br label %380

380:                                              ; preds = %379
  %381 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %382 = load i32, ptr %381, align 4, !tbaa !9
  %383 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %384 = load i32, ptr %383, align 4, !tbaa !9
  %385 = and i32 %382, %384
  %386 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %387 = load i32, ptr %386, align 4, !tbaa !9
  %388 = xor i32 %387, %385
  store i32 %388, ptr %386, align 4, !tbaa !9
  br label %389

389:                                              ; preds = %380
  %390 = call i32 @aead_random_generate_32()
  store i32 %390, ptr %11, align 4, !tbaa !16
  %391 = load i32, ptr %11, align 4, !tbaa !16
  %392 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %393 = load i32, ptr %392, align 4, !tbaa !9
  %394 = xor i32 %393, %391
  store i32 %394, ptr %392, align 4, !tbaa !9
  %395 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %396 = load i32, ptr %395, align 4, !tbaa !12
  %397 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %398 = load i32, ptr %397, align 4, !tbaa !9
  %399 = and i32 %396, %398
  %400 = load i32, ptr %11, align 4, !tbaa !16
  %401 = xor i32 %400, %399
  store i32 %401, ptr %11, align 4, !tbaa !16
  %402 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %403 = load i32, ptr %402, align 4, !tbaa !12
  %404 = load i32, ptr %11, align 4, !tbaa !16
  %405 = xor i32 %403, %404
  %406 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %407 = load i32, ptr %406, align 4, !tbaa !12
  %408 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %409 = load i32, ptr %408, align 4, !tbaa !9
  %410 = and i32 %407, %409
  %411 = xor i32 %405, %410
  %412 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  store i32 %411, ptr %412, align 4, !tbaa !12
  br label %413

413:                                              ; preds = %389
  br label %414

414:                                              ; preds = %413
  br label %415

415:                                              ; preds = %414
  %416 = call i32 @aead_random_generate_32()
  store i32 %416, ptr %11, align 4, !tbaa !16
  %417 = load i32, ptr %11, align 4, !tbaa !16
  %418 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %419 = load i32, ptr %418, align 4, !tbaa !9
  %420 = xor i32 %419, %417
  store i32 %420, ptr %418, align 4, !tbaa !9
  %421 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %422 = load i32, ptr %421, align 4, !tbaa !13
  %423 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %424 = load i32, ptr %423, align 4, !tbaa !9
  %425 = and i32 %422, %424
  %426 = load i32, ptr %11, align 4, !tbaa !16
  %427 = xor i32 %426, %425
  store i32 %427, ptr %11, align 4, !tbaa !16
  %428 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %429 = load i32, ptr %428, align 4, !tbaa !13
  %430 = load i32, ptr %11, align 4, !tbaa !16
  %431 = xor i32 %429, %430
  %432 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %433 = load i32, ptr %432, align 4, !tbaa !13
  %434 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %435 = load i32, ptr %434, align 4, !tbaa !9
  %436 = and i32 %433, %435
  %437 = xor i32 %431, %436
  %438 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  store i32 %437, ptr %438, align 4, !tbaa !13
  br label %439

439:                                              ; preds = %415
  br label %440

440:                                              ; preds = %439
  %441 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %442 = load i32, ptr %441, align 4, !tbaa !12
  %443 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %444 = load i32, ptr %443, align 4, !tbaa !12
  %445 = and i32 %442, %444
  %446 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %447 = load i32, ptr %446, align 4, !tbaa !12
  %448 = xor i32 %447, %445
  store i32 %448, ptr %446, align 4, !tbaa !12
  br label %449

449:                                              ; preds = %440
  %450 = call i32 @aead_random_generate_32()
  store i32 %450, ptr %11, align 4, !tbaa !16
  %451 = load i32, ptr %11, align 4, !tbaa !16
  %452 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %453 = load i32, ptr %452, align 4, !tbaa !12
  %454 = xor i32 %453, %451
  store i32 %454, ptr %452, align 4, !tbaa !12
  %455 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %456 = load i32, ptr %455, align 4, !tbaa !13
  %457 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %458 = load i32, ptr %457, align 4, !tbaa !12
  %459 = and i32 %456, %458
  %460 = load i32, ptr %11, align 4, !tbaa !16
  %461 = xor i32 %460, %459
  store i32 %461, ptr %11, align 4, !tbaa !16
  %462 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %463 = load i32, ptr %462, align 4, !tbaa !13
  %464 = load i32, ptr %11, align 4, !tbaa !16
  %465 = xor i32 %463, %464
  %466 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %467 = load i32, ptr %466, align 4, !tbaa !13
  %468 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %469 = load i32, ptr %468, align 4, !tbaa !12
  %470 = and i32 %467, %469
  %471 = xor i32 %465, %470
  %472 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  store i32 %471, ptr %472, align 4, !tbaa !13
  br label %473

473:                                              ; preds = %449
  br label %474

474:                                              ; preds = %473
  %475 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %476 = load i32, ptr %475, align 4, !tbaa !13
  %477 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %478 = load i32, ptr %477, align 4, !tbaa !13
  %479 = and i32 %476, %478
  %480 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %481 = load i32, ptr %480, align 4, !tbaa !13
  %482 = xor i32 %481, %479
  store i32 %482, ptr %480, align 4, !tbaa !13
  br label %483

483:                                              ; preds = %474
  br label %484

484:                                              ; preds = %483
  br label %485

485:                                              ; preds = %484
  %486 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %487 = load i32, ptr %486, align 4, !tbaa !15
  %488 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %489 = load i32, ptr %488, align 4, !tbaa !15
  %490 = and i32 %487, %489
  %491 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %492 = load i32, ptr %491, align 4, !tbaa !15
  %493 = xor i32 %492, %490
  store i32 %493, ptr %491, align 4, !tbaa !15
  br label %494

494:                                              ; preds = %485
  %495 = call i32 @aead_random_generate_32()
  store i32 %495, ptr %11, align 4, !tbaa !16
  %496 = load i32, ptr %11, align 4, !tbaa !16
  %497 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %498 = load i32, ptr %497, align 4, !tbaa !15
  %499 = xor i32 %498, %496
  store i32 %499, ptr %497, align 4, !tbaa !15
  %500 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %501 = load i32, ptr %500, align 4, !tbaa !9
  %502 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %503 = load i32, ptr %502, align 4, !tbaa !15
  %504 = and i32 %501, %503
  %505 = load i32, ptr %11, align 4, !tbaa !16
  %506 = xor i32 %505, %504
  store i32 %506, ptr %11, align 4, !tbaa !16
  %507 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %508 = load i32, ptr %507, align 4, !tbaa !9
  %509 = load i32, ptr %11, align 4, !tbaa !16
  %510 = xor i32 %508, %509
  %511 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %512 = load i32, ptr %511, align 4, !tbaa !9
  %513 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %514 = load i32, ptr %513, align 4, !tbaa !15
  %515 = and i32 %512, %514
  %516 = xor i32 %510, %515
  %517 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  store i32 %516, ptr %517, align 4, !tbaa !9
  br label %518

518:                                              ; preds = %494
  br label %519

519:                                              ; preds = %518
  br label %520

520:                                              ; preds = %519
  %521 = call i32 @aead_random_generate_32()
  store i32 %521, ptr %11, align 4, !tbaa !16
  %522 = load i32, ptr %11, align 4, !tbaa !16
  %523 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %524 = load i32, ptr %523, align 4, !tbaa !15
  %525 = xor i32 %524, %522
  store i32 %525, ptr %523, align 4, !tbaa !15
  %526 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %527 = load i32, ptr %526, align 4, !tbaa !12
  %528 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %529 = load i32, ptr %528, align 4, !tbaa !15
  %530 = and i32 %527, %529
  %531 = load i32, ptr %11, align 4, !tbaa !16
  %532 = xor i32 %531, %530
  store i32 %532, ptr %11, align 4, !tbaa !16
  %533 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %534 = load i32, ptr %533, align 4, !tbaa !12
  %535 = load i32, ptr %11, align 4, !tbaa !16
  %536 = xor i32 %534, %535
  %537 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %538 = load i32, ptr %537, align 4, !tbaa !12
  %539 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %540 = load i32, ptr %539, align 4, !tbaa !15
  %541 = and i32 %538, %540
  %542 = xor i32 %536, %541
  %543 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  store i32 %542, ptr %543, align 4, !tbaa !12
  br label %544

544:                                              ; preds = %520
  br label %545

545:                                              ; preds = %544
  br label %546

546:                                              ; preds = %545
  %547 = call i32 @aead_random_generate_32()
  store i32 %547, ptr %11, align 4, !tbaa !16
  %548 = load i32, ptr %11, align 4, !tbaa !16
  %549 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %550 = load i32, ptr %549, align 4, !tbaa !15
  %551 = xor i32 %550, %548
  store i32 %551, ptr %549, align 4, !tbaa !15
  %552 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %553 = load i32, ptr %552, align 4, !tbaa !13
  %554 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %555 = load i32, ptr %554, align 4, !tbaa !15
  %556 = and i32 %553, %555
  %557 = load i32, ptr %11, align 4, !tbaa !16
  %558 = xor i32 %557, %556
  store i32 %558, ptr %11, align 4, !tbaa !16
  %559 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %560 = load i32, ptr %559, align 4, !tbaa !13
  %561 = load i32, ptr %11, align 4, !tbaa !16
  %562 = xor i32 %560, %561
  %563 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %564 = load i32, ptr %563, align 4, !tbaa !13
  %565 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %566 = load i32, ptr %565, align 4, !tbaa !15
  %567 = and i32 %564, %566
  %568 = xor i32 %562, %567
  %569 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  store i32 %568, ptr %569, align 4, !tbaa !13
  br label %570

570:                                              ; preds = %546
  br label %571

571:                                              ; preds = %570
  %572 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %573 = load i32, ptr %572, align 4, !tbaa !9
  %574 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %575 = load i32, ptr %574, align 4, !tbaa !9
  %576 = and i32 %573, %575
  %577 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %578 = load i32, ptr %577, align 4, !tbaa !9
  %579 = xor i32 %578, %576
  store i32 %579, ptr %577, align 4, !tbaa !9
  br label %580

580:                                              ; preds = %571
  %581 = call i32 @aead_random_generate_32()
  store i32 %581, ptr %11, align 4, !tbaa !16
  %582 = load i32, ptr %11, align 4, !tbaa !16
  %583 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %584 = load i32, ptr %583, align 4, !tbaa !9
  %585 = xor i32 %584, %582
  store i32 %585, ptr %583, align 4, !tbaa !9
  %586 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %587 = load i32, ptr %586, align 4, !tbaa !12
  %588 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %589 = load i32, ptr %588, align 4, !tbaa !9
  %590 = and i32 %587, %589
  %591 = load i32, ptr %11, align 4, !tbaa !16
  %592 = xor i32 %591, %590
  store i32 %592, ptr %11, align 4, !tbaa !16
  %593 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %594 = load i32, ptr %593, align 4, !tbaa !12
  %595 = load i32, ptr %11, align 4, !tbaa !16
  %596 = xor i32 %594, %595
  %597 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %598 = load i32, ptr %597, align 4, !tbaa !12
  %599 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %600 = load i32, ptr %599, align 4, !tbaa !9
  %601 = and i32 %598, %600
  %602 = xor i32 %596, %601
  %603 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  store i32 %602, ptr %603, align 4, !tbaa !12
  br label %604

604:                                              ; preds = %580
  br label %605

605:                                              ; preds = %604
  br label %606

606:                                              ; preds = %605
  %607 = call i32 @aead_random_generate_32()
  store i32 %607, ptr %11, align 4, !tbaa !16
  %608 = load i32, ptr %11, align 4, !tbaa !16
  %609 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %610 = load i32, ptr %609, align 4, !tbaa !9
  %611 = xor i32 %610, %608
  store i32 %611, ptr %609, align 4, !tbaa !9
  %612 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %613 = load i32, ptr %612, align 4, !tbaa !13
  %614 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %615 = load i32, ptr %614, align 4, !tbaa !9
  %616 = and i32 %613, %615
  %617 = load i32, ptr %11, align 4, !tbaa !16
  %618 = xor i32 %617, %616
  store i32 %618, ptr %11, align 4, !tbaa !16
  %619 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %620 = load i32, ptr %619, align 4, !tbaa !13
  %621 = load i32, ptr %11, align 4, !tbaa !16
  %622 = xor i32 %620, %621
  %623 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %624 = load i32, ptr %623, align 4, !tbaa !13
  %625 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %626 = load i32, ptr %625, align 4, !tbaa !9
  %627 = and i32 %624, %626
  %628 = xor i32 %622, %627
  %629 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  store i32 %628, ptr %629, align 4, !tbaa !13
  br label %630

630:                                              ; preds = %606
  br label %631

631:                                              ; preds = %630
  %632 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %633 = load i32, ptr %632, align 4, !tbaa !12
  %634 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %635 = load i32, ptr %634, align 4, !tbaa !12
  %636 = and i32 %633, %635
  %637 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %638 = load i32, ptr %637, align 4, !tbaa !12
  %639 = xor i32 %638, %636
  store i32 %639, ptr %637, align 4, !tbaa !12
  br label %640

640:                                              ; preds = %631
  %641 = call i32 @aead_random_generate_32()
  store i32 %641, ptr %11, align 4, !tbaa !16
  %642 = load i32, ptr %11, align 4, !tbaa !16
  %643 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %644 = load i32, ptr %643, align 4, !tbaa !12
  %645 = xor i32 %644, %642
  store i32 %645, ptr %643, align 4, !tbaa !12
  %646 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %647 = load i32, ptr %646, align 4, !tbaa !13
  %648 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %649 = load i32, ptr %648, align 4, !tbaa !12
  %650 = and i32 %647, %649
  %651 = load i32, ptr %11, align 4, !tbaa !16
  %652 = xor i32 %651, %650
  store i32 %652, ptr %11, align 4, !tbaa !16
  %653 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %654 = load i32, ptr %653, align 4, !tbaa !13
  %655 = load i32, ptr %11, align 4, !tbaa !16
  %656 = xor i32 %654, %655
  %657 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %658 = load i32, ptr %657, align 4, !tbaa !13
  %659 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %660 = load i32, ptr %659, align 4, !tbaa !12
  %661 = and i32 %658, %660
  %662 = xor i32 %656, %661
  %663 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  store i32 %662, ptr %663, align 4, !tbaa !13
  br label %664

664:                                              ; preds = %640
  br label %665

665:                                              ; preds = %664
  %666 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %667 = load i32, ptr %666, align 4, !tbaa !13
  %668 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %669 = load i32, ptr %668, align 4, !tbaa !13
  %670 = and i32 %667, %669
  %671 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %672 = load i32, ptr %671, align 4, !tbaa !13
  %673 = xor i32 %672, %670
  store i32 %673, ptr %671, align 4, !tbaa !13
  br label %674

674:                                              ; preds = %665
  br label %675

675:                                              ; preds = %674
  br label %676

676:                                              ; preds = %675
  %677 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %678 = load i32, ptr %677, align 4, !tbaa !15
  %679 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %680 = load i32, ptr %679, align 4, !tbaa !15
  %681 = and i32 %678, %680
  %682 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %683 = load i32, ptr %682, align 4, !tbaa !15
  %684 = xor i32 %683, %681
  store i32 %684, ptr %682, align 4, !tbaa !15
  br label %685

685:                                              ; preds = %676
  %686 = call i32 @aead_random_generate_32()
  store i32 %686, ptr %11, align 4, !tbaa !16
  %687 = load i32, ptr %11, align 4, !tbaa !16
  %688 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %689 = load i32, ptr %688, align 4, !tbaa !15
  %690 = xor i32 %689, %687
  store i32 %690, ptr %688, align 4, !tbaa !15
  %691 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %692 = load i32, ptr %691, align 4, !tbaa !9
  %693 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %694 = load i32, ptr %693, align 4, !tbaa !15
  %695 = and i32 %692, %694
  %696 = load i32, ptr %11, align 4, !tbaa !16
  %697 = xor i32 %696, %695
  store i32 %697, ptr %11, align 4, !tbaa !16
  %698 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %699 = load i32, ptr %698, align 4, !tbaa !9
  %700 = load i32, ptr %11, align 4, !tbaa !16
  %701 = xor i32 %699, %700
  %702 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %703 = load i32, ptr %702, align 4, !tbaa !9
  %704 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %705 = load i32, ptr %704, align 4, !tbaa !15
  %706 = and i32 %703, %705
  %707 = xor i32 %701, %706
  %708 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  store i32 %707, ptr %708, align 4, !tbaa !9
  br label %709

709:                                              ; preds = %685
  br label %710

710:                                              ; preds = %709
  br label %711

711:                                              ; preds = %710
  %712 = call i32 @aead_random_generate_32()
  store i32 %712, ptr %11, align 4, !tbaa !16
  %713 = load i32, ptr %11, align 4, !tbaa !16
  %714 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %715 = load i32, ptr %714, align 4, !tbaa !15
  %716 = xor i32 %715, %713
  store i32 %716, ptr %714, align 4, !tbaa !15
  %717 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %718 = load i32, ptr %717, align 4, !tbaa !12
  %719 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %720 = load i32, ptr %719, align 4, !tbaa !15
  %721 = and i32 %718, %720
  %722 = load i32, ptr %11, align 4, !tbaa !16
  %723 = xor i32 %722, %721
  store i32 %723, ptr %11, align 4, !tbaa !16
  %724 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %725 = load i32, ptr %724, align 4, !tbaa !12
  %726 = load i32, ptr %11, align 4, !tbaa !16
  %727 = xor i32 %725, %726
  %728 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %729 = load i32, ptr %728, align 4, !tbaa !12
  %730 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %731 = load i32, ptr %730, align 4, !tbaa !15
  %732 = and i32 %729, %731
  %733 = xor i32 %727, %732
  %734 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  store i32 %733, ptr %734, align 4, !tbaa !12
  br label %735

735:                                              ; preds = %711
  br label %736

736:                                              ; preds = %735
  br label %737

737:                                              ; preds = %736
  %738 = call i32 @aead_random_generate_32()
  store i32 %738, ptr %11, align 4, !tbaa !16
  %739 = load i32, ptr %11, align 4, !tbaa !16
  %740 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %741 = load i32, ptr %740, align 4, !tbaa !15
  %742 = xor i32 %741, %739
  store i32 %742, ptr %740, align 4, !tbaa !15
  %743 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %744 = load i32, ptr %743, align 4, !tbaa !13
  %745 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %746 = load i32, ptr %745, align 4, !tbaa !15
  %747 = and i32 %744, %746
  %748 = load i32, ptr %11, align 4, !tbaa !16
  %749 = xor i32 %748, %747
  store i32 %749, ptr %11, align 4, !tbaa !16
  %750 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %751 = load i32, ptr %750, align 4, !tbaa !13
  %752 = load i32, ptr %11, align 4, !tbaa !16
  %753 = xor i32 %751, %752
  %754 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %755 = load i32, ptr %754, align 4, !tbaa !13
  %756 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %757 = load i32, ptr %756, align 4, !tbaa !15
  %758 = and i32 %755, %757
  %759 = xor i32 %753, %758
  %760 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  store i32 %759, ptr %760, align 4, !tbaa !13
  br label %761

761:                                              ; preds = %737
  br label %762

762:                                              ; preds = %761
  %763 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %764 = load i32, ptr %763, align 4, !tbaa !9
  %765 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %766 = load i32, ptr %765, align 4, !tbaa !9
  %767 = and i32 %764, %766
  %768 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %769 = load i32, ptr %768, align 4, !tbaa !9
  %770 = xor i32 %769, %767
  store i32 %770, ptr %768, align 4, !tbaa !9
  br label %771

771:                                              ; preds = %762
  %772 = call i32 @aead_random_generate_32()
  store i32 %772, ptr %11, align 4, !tbaa !16
  %773 = load i32, ptr %11, align 4, !tbaa !16
  %774 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %775 = load i32, ptr %774, align 4, !tbaa !9
  %776 = xor i32 %775, %773
  store i32 %776, ptr %774, align 4, !tbaa !9
  %777 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %778 = load i32, ptr %777, align 4, !tbaa !12
  %779 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %780 = load i32, ptr %779, align 4, !tbaa !9
  %781 = and i32 %778, %780
  %782 = load i32, ptr %11, align 4, !tbaa !16
  %783 = xor i32 %782, %781
  store i32 %783, ptr %11, align 4, !tbaa !16
  %784 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %785 = load i32, ptr %784, align 4, !tbaa !12
  %786 = load i32, ptr %11, align 4, !tbaa !16
  %787 = xor i32 %785, %786
  %788 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %789 = load i32, ptr %788, align 4, !tbaa !12
  %790 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %791 = load i32, ptr %790, align 4, !tbaa !9
  %792 = and i32 %789, %791
  %793 = xor i32 %787, %792
  %794 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  store i32 %793, ptr %794, align 4, !tbaa !12
  br label %795

795:                                              ; preds = %771
  br label %796

796:                                              ; preds = %795
  br label %797

797:                                              ; preds = %796
  %798 = call i32 @aead_random_generate_32()
  store i32 %798, ptr %11, align 4, !tbaa !16
  %799 = load i32, ptr %11, align 4, !tbaa !16
  %800 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %801 = load i32, ptr %800, align 4, !tbaa !9
  %802 = xor i32 %801, %799
  store i32 %802, ptr %800, align 4, !tbaa !9
  %803 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %804 = load i32, ptr %803, align 4, !tbaa !13
  %805 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %806 = load i32, ptr %805, align 4, !tbaa !9
  %807 = and i32 %804, %806
  %808 = load i32, ptr %11, align 4, !tbaa !16
  %809 = xor i32 %808, %807
  store i32 %809, ptr %11, align 4, !tbaa !16
  %810 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %811 = load i32, ptr %810, align 4, !tbaa !13
  %812 = load i32, ptr %11, align 4, !tbaa !16
  %813 = xor i32 %811, %812
  %814 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %815 = load i32, ptr %814, align 4, !tbaa !13
  %816 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %817 = load i32, ptr %816, align 4, !tbaa !9
  %818 = and i32 %815, %817
  %819 = xor i32 %813, %818
  %820 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  store i32 %819, ptr %820, align 4, !tbaa !13
  br label %821

821:                                              ; preds = %797
  br label %822

822:                                              ; preds = %821
  %823 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %824 = load i32, ptr %823, align 4, !tbaa !12
  %825 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %826 = load i32, ptr %825, align 4, !tbaa !12
  %827 = and i32 %824, %826
  %828 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %829 = load i32, ptr %828, align 4, !tbaa !12
  %830 = xor i32 %829, %827
  store i32 %830, ptr %828, align 4, !tbaa !12
  br label %831

831:                                              ; preds = %822
  %832 = call i32 @aead_random_generate_32()
  store i32 %832, ptr %11, align 4, !tbaa !16
  %833 = load i32, ptr %11, align 4, !tbaa !16
  %834 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %835 = load i32, ptr %834, align 4, !tbaa !12
  %836 = xor i32 %835, %833
  store i32 %836, ptr %834, align 4, !tbaa !12
  %837 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %838 = load i32, ptr %837, align 4, !tbaa !13
  %839 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %840 = load i32, ptr %839, align 4, !tbaa !12
  %841 = and i32 %838, %840
  %842 = load i32, ptr %11, align 4, !tbaa !16
  %843 = xor i32 %842, %841
  store i32 %843, ptr %11, align 4, !tbaa !16
  %844 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %845 = load i32, ptr %844, align 4, !tbaa !13
  %846 = load i32, ptr %11, align 4, !tbaa !16
  %847 = xor i32 %845, %846
  %848 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %849 = load i32, ptr %848, align 4, !tbaa !13
  %850 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %851 = load i32, ptr %850, align 4, !tbaa !12
  %852 = and i32 %849, %851
  %853 = xor i32 %847, %852
  %854 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  store i32 %853, ptr %854, align 4, !tbaa !13
  br label %855

855:                                              ; preds = %831
  br label %856

856:                                              ; preds = %855
  %857 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %858 = load i32, ptr %857, align 4, !tbaa !13
  %859 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %860 = load i32, ptr %859, align 4, !tbaa !13
  %861 = and i32 %858, %860
  %862 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %863 = load i32, ptr %862, align 4, !tbaa !13
  %864 = xor i32 %863, %861
  store i32 %864, ptr %862, align 4, !tbaa !13
  br label %865

865:                                              ; preds = %856
  br label %866

866:                                              ; preds = %865
  br label %867

867:                                              ; preds = %866
  %868 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %869 = load i32, ptr %868, align 4, !tbaa !15
  %870 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %871 = load i32, ptr %870, align 4, !tbaa !15
  %872 = xor i32 %871, %869
  store i32 %872, ptr %870, align 4, !tbaa !15
  %873 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %874 = load i32, ptr %873, align 4, !tbaa !9
  %875 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %876 = load i32, ptr %875, align 4, !tbaa !9
  %877 = xor i32 %876, %874
  store i32 %877, ptr %875, align 4, !tbaa !9
  %878 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %879 = load i32, ptr %878, align 4, !tbaa !12
  %880 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %881 = load i32, ptr %880, align 4, !tbaa !12
  %882 = xor i32 %881, %879
  store i32 %882, ptr %880, align 4, !tbaa !12
  %883 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %884 = load i32, ptr %883, align 4, !tbaa !13
  %885 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %886 = load i32, ptr %885, align 4, !tbaa !13
  %887 = xor i32 %886, %884
  store i32 %887, ptr %885, align 4, !tbaa !13
  br label %888

888:                                              ; preds = %867
  br label %889

889:                                              ; preds = %888
  br label %890

890:                                              ; preds = %889
  %891 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %892 = load i32, ptr %891, align 4, !tbaa !15
  %893 = xor i32 %892, -1
  %894 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  store i32 %893, ptr %894, align 4, !tbaa !15
  br label %895

895:                                              ; preds = %890
  br label %896

896:                                              ; preds = %895
  br label %897

897:                                              ; preds = %896
  %898 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %899 = load i32, ptr %898, align 4, !tbaa !15
  %900 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %901 = load i32, ptr %900, align 4, !tbaa !15
  %902 = xor i32 %901, %899
  store i32 %902, ptr %900, align 4, !tbaa !15
  %903 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %904 = load i32, ptr %903, align 4, !tbaa !9
  %905 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %906 = load i32, ptr %905, align 4, !tbaa !9
  %907 = xor i32 %906, %904
  store i32 %907, ptr %905, align 4, !tbaa !9
  %908 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %909 = load i32, ptr %908, align 4, !tbaa !12
  %910 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %911 = load i32, ptr %910, align 4, !tbaa !12
  %912 = xor i32 %911, %909
  store i32 %912, ptr %910, align 4, !tbaa !12
  %913 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %914 = load i32, ptr %913, align 4, !tbaa !13
  %915 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %916 = load i32, ptr %915, align 4, !tbaa !13
  %917 = xor i32 %916, %914
  store i32 %917, ptr %915, align 4, !tbaa !13
  br label %918

918:                                              ; preds = %897
  br label %919

919:                                              ; preds = %918
  br label %920

920:                                              ; preds = %919
  %921 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %922 = load i32, ptr %921, align 4, !tbaa !15
  %923 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %924 = load i32, ptr %923, align 4, !tbaa !15
  %925 = xor i32 %924, %922
  store i32 %925, ptr %923, align 4, !tbaa !15
  %926 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %927 = load i32, ptr %926, align 4, !tbaa !9
  %928 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %929 = load i32, ptr %928, align 4, !tbaa !9
  %930 = xor i32 %929, %927
  store i32 %930, ptr %928, align 4, !tbaa !9
  %931 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %932 = load i32, ptr %931, align 4, !tbaa !12
  %933 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %934 = load i32, ptr %933, align 4, !tbaa !12
  %935 = xor i32 %934, %932
  store i32 %935, ptr %933, align 4, !tbaa !12
  %936 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %937 = load i32, ptr %936, align 4, !tbaa !13
  %938 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %939 = load i32, ptr %938, align 4, !tbaa !13
  %940 = xor i32 %939, %937
  store i32 %940, ptr %938, align 4, !tbaa !13
  br label %941

941:                                              ; preds = %920
  br label %942

942:                                              ; preds = %941
  call void @pyjamask_matrix_multiply_masked_a3861085(ptr noundef %8)
  call void @pyjamask_matrix_multiply_masked_63417021(ptr noundef %9)
  call void @pyjamask_matrix_multiply_masked_692cf280(ptr noundef %10)
  br label %943

943:                                              ; preds = %942
  %944 = load i8, ptr %12, align 1, !tbaa !14
  %945 = add i8 %944, 1
  store i8 %945, ptr %12, align 1, !tbaa !14
  %946 = load ptr, ptr %7, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %946, i64 3
  store ptr %947, ptr %7, align 8, !tbaa !5
  br label %150, !llvm.loop !17

948:                                              ; preds = %150
  br label %949

949:                                              ; preds = %948
  %950 = load ptr, ptr %7, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %950, i64 0
  %952 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %951, i32 0, i32 0
  %953 = load i32, ptr %952, align 4, !tbaa !15
  %954 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %955 = load i32, ptr %954, align 4, !tbaa !15
  %956 = xor i32 %955, %953
  store i32 %956, ptr %954, align 4, !tbaa !15
  %957 = load ptr, ptr %7, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %957, i64 0
  %959 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %958, i32 0, i32 1
  %960 = load i32, ptr %959, align 4, !tbaa !9
  %961 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %962 = load i32, ptr %961, align 4, !tbaa !9
  %963 = xor i32 %962, %960
  store i32 %963, ptr %961, align 4, !tbaa !9
  %964 = load ptr, ptr %7, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %964, i64 0
  %966 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %965, i32 0, i32 2
  %967 = load i32, ptr %966, align 4, !tbaa !12
  %968 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %969 = load i32, ptr %968, align 4, !tbaa !12
  %970 = xor i32 %969, %967
  store i32 %970, ptr %968, align 4, !tbaa !12
  %971 = load ptr, ptr %7, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %971, i64 0
  %973 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %972, i32 0, i32 3
  %974 = load i32, ptr %973, align 4, !tbaa !13
  %975 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %976 = load i32, ptr %975, align 4, !tbaa !13
  %977 = xor i32 %976, %974
  store i32 %977, ptr %975, align 4, !tbaa !13
  br label %978

978:                                              ; preds = %949
  br label %979

979:                                              ; preds = %978
  br label %980

980:                                              ; preds = %979
  %981 = load ptr, ptr %7, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %981, i64 1
  %983 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %982, i32 0, i32 0
  %984 = load i32, ptr %983, align 4, !tbaa !15
  %985 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %986 = load i32, ptr %985, align 4, !tbaa !15
  %987 = xor i32 %986, %984
  store i32 %987, ptr %985, align 4, !tbaa !15
  %988 = load ptr, ptr %7, align 8, !tbaa !5
  %989 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %988, i64 1
  %990 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %989, i32 0, i32 1
  %991 = load i32, ptr %990, align 4, !tbaa !9
  %992 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %993 = load i32, ptr %992, align 4, !tbaa !9
  %994 = xor i32 %993, %991
  store i32 %994, ptr %992, align 4, !tbaa !9
  %995 = load ptr, ptr %7, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %995, i64 1
  %997 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %996, i32 0, i32 2
  %998 = load i32, ptr %997, align 4, !tbaa !12
  %999 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %1000 = load i32, ptr %999, align 4, !tbaa !12
  %1001 = xor i32 %1000, %998
  store i32 %1001, ptr %999, align 4, !tbaa !12
  %1002 = load ptr, ptr %7, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1002, i64 1
  %1004 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1003, i32 0, i32 3
  %1005 = load i32, ptr %1004, align 4, !tbaa !13
  %1006 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %1007 = load i32, ptr %1006, align 4, !tbaa !13
  %1008 = xor i32 %1007, %1005
  store i32 %1008, ptr %1006, align 4, !tbaa !13
  br label %1009

1009:                                             ; preds = %980
  br label %1010

1010:                                             ; preds = %1009
  br label %1011

1011:                                             ; preds = %1010
  %1012 = load ptr, ptr %7, align 8, !tbaa !5
  %1013 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1012, i64 2
  %1014 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1013, i32 0, i32 0
  %1015 = load i32, ptr %1014, align 4, !tbaa !15
  %1016 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %1017 = load i32, ptr %1016, align 4, !tbaa !15
  %1018 = xor i32 %1017, %1015
  store i32 %1018, ptr %1016, align 4, !tbaa !15
  %1019 = load ptr, ptr %7, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1019, i64 2
  %1021 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1020, i32 0, i32 1
  %1022 = load i32, ptr %1021, align 4, !tbaa !9
  %1023 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %1024 = load i32, ptr %1023, align 4, !tbaa !9
  %1025 = xor i32 %1024, %1022
  store i32 %1025, ptr %1023, align 4, !tbaa !9
  %1026 = load ptr, ptr %7, align 8, !tbaa !5
  %1027 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1026, i64 2
  %1028 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1027, i32 0, i32 2
  %1029 = load i32, ptr %1028, align 4, !tbaa !12
  %1030 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %1031 = load i32, ptr %1030, align 4, !tbaa !12
  %1032 = xor i32 %1031, %1029
  store i32 %1032, ptr %1030, align 4, !tbaa !12
  %1033 = load ptr, ptr %7, align 8, !tbaa !5
  %1034 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1033, i64 2
  %1035 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1034, i32 0, i32 3
  %1036 = load i32, ptr %1035, align 4, !tbaa !13
  %1037 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %1038 = load i32, ptr %1037, align 4, !tbaa !13
  %1039 = xor i32 %1038, %1036
  store i32 %1039, ptr %1037, align 4, !tbaa !13
  br label %1040

1040:                                             ; preds = %1011
  br label %1041

1041:                                             ; preds = %1040
  br label %1042

1042:                                             ; preds = %1041
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  %1043 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %1044 = load i32, ptr %1043, align 4, !tbaa !15
  %1045 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %1046 = load i32, ptr %1045, align 4, !tbaa !9
  %1047 = xor i32 %1044, %1046
  %1048 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %1049 = load i32, ptr %1048, align 4, !tbaa !12
  %1050 = xor i32 %1047, %1049
  %1051 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %1052 = load i32, ptr %1051, align 4, !tbaa !13
  %1053 = xor i32 %1050, %1052
  store i32 %1053, ptr %13, align 4, !tbaa !16
  %1054 = load i32, ptr %13, align 4, !tbaa !16
  %1055 = lshr i32 %1054, 24
  %1056 = trunc i32 %1055 to i8
  %1057 = load ptr, ptr %5, align 8, !tbaa !5
  %1058 = getelementptr inbounds i8, ptr %1057, i64 0
  store i8 %1056, ptr %1058, align 1, !tbaa !14
  %1059 = load i32, ptr %13, align 4, !tbaa !16
  %1060 = lshr i32 %1059, 16
  %1061 = trunc i32 %1060 to i8
  %1062 = load ptr, ptr %5, align 8, !tbaa !5
  %1063 = getelementptr inbounds i8, ptr %1062, i64 1
  store i8 %1061, ptr %1063, align 1, !tbaa !14
  %1064 = load i32, ptr %13, align 4, !tbaa !16
  %1065 = lshr i32 %1064, 8
  %1066 = trunc i32 %1065 to i8
  %1067 = load ptr, ptr %5, align 8, !tbaa !5
  %1068 = getelementptr inbounds i8, ptr %1067, i64 2
  store i8 %1066, ptr %1068, align 1, !tbaa !14
  %1069 = load i32, ptr %13, align 4, !tbaa !16
  %1070 = trunc i32 %1069 to i8
  %1071 = load ptr, ptr %5, align 8, !tbaa !5
  %1072 = getelementptr inbounds i8, ptr %1071, i64 3
  store i8 %1070, ptr %1072, align 1, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  br label %1073

1073:                                             ; preds = %1042
  br label %1074

1074:                                             ; preds = %1073
  br label %1075

1075:                                             ; preds = %1074
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  %1076 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %1077 = load i32, ptr %1076, align 4, !tbaa !15
  %1078 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %1079 = load i32, ptr %1078, align 4, !tbaa !9
  %1080 = xor i32 %1077, %1079
  %1081 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %1082 = load i32, ptr %1081, align 4, !tbaa !12
  %1083 = xor i32 %1080, %1082
  %1084 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %1085 = load i32, ptr %1084, align 4, !tbaa !13
  %1086 = xor i32 %1083, %1085
  store i32 %1086, ptr %14, align 4, !tbaa !16
  %1087 = load i32, ptr %14, align 4, !tbaa !16
  %1088 = lshr i32 %1087, 24
  %1089 = trunc i32 %1088 to i8
  %1090 = load ptr, ptr %5, align 8, !tbaa !5
  %1091 = getelementptr inbounds i8, ptr %1090, i64 4
  %1092 = getelementptr inbounds i8, ptr %1091, i64 0
  store i8 %1089, ptr %1092, align 1, !tbaa !14
  %1093 = load i32, ptr %14, align 4, !tbaa !16
  %1094 = lshr i32 %1093, 16
  %1095 = trunc i32 %1094 to i8
  %1096 = load ptr, ptr %5, align 8, !tbaa !5
  %1097 = getelementptr inbounds i8, ptr %1096, i64 4
  %1098 = getelementptr inbounds i8, ptr %1097, i64 1
  store i8 %1095, ptr %1098, align 1, !tbaa !14
  %1099 = load i32, ptr %14, align 4, !tbaa !16
  %1100 = lshr i32 %1099, 8
  %1101 = trunc i32 %1100 to i8
  %1102 = load ptr, ptr %5, align 8, !tbaa !5
  %1103 = getelementptr inbounds i8, ptr %1102, i64 4
  %1104 = getelementptr inbounds i8, ptr %1103, i64 2
  store i8 %1101, ptr %1104, align 1, !tbaa !14
  %1105 = load i32, ptr %14, align 4, !tbaa !16
  %1106 = trunc i32 %1105 to i8
  %1107 = load ptr, ptr %5, align 8, !tbaa !5
  %1108 = getelementptr inbounds i8, ptr %1107, i64 4
  %1109 = getelementptr inbounds i8, ptr %1108, i64 3
  store i8 %1106, ptr %1109, align 1, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  br label %1110

1110:                                             ; preds = %1075
  br label %1111

1111:                                             ; preds = %1110
  br label %1112

1112:                                             ; preds = %1111
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  %1113 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %1114 = load i32, ptr %1113, align 4, !tbaa !15
  %1115 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %1116 = load i32, ptr %1115, align 4, !tbaa !9
  %1117 = xor i32 %1114, %1116
  %1118 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %1119 = load i32, ptr %1118, align 4, !tbaa !12
  %1120 = xor i32 %1117, %1119
  %1121 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %1122 = load i32, ptr %1121, align 4, !tbaa !13
  %1123 = xor i32 %1120, %1122
  store i32 %1123, ptr %15, align 4, !tbaa !16
  %1124 = load i32, ptr %15, align 4, !tbaa !16
  %1125 = lshr i32 %1124, 24
  %1126 = trunc i32 %1125 to i8
  %1127 = load ptr, ptr %5, align 8, !tbaa !5
  %1128 = getelementptr inbounds i8, ptr %1127, i64 8
  %1129 = getelementptr inbounds i8, ptr %1128, i64 0
  store i8 %1126, ptr %1129, align 1, !tbaa !14
  %1130 = load i32, ptr %15, align 4, !tbaa !16
  %1131 = lshr i32 %1130, 16
  %1132 = trunc i32 %1131 to i8
  %1133 = load ptr, ptr %5, align 8, !tbaa !5
  %1134 = getelementptr inbounds i8, ptr %1133, i64 8
  %1135 = getelementptr inbounds i8, ptr %1134, i64 1
  store i8 %1132, ptr %1135, align 1, !tbaa !14
  %1136 = load i32, ptr %15, align 4, !tbaa !16
  %1137 = lshr i32 %1136, 8
  %1138 = trunc i32 %1137 to i8
  %1139 = load ptr, ptr %5, align 8, !tbaa !5
  %1140 = getelementptr inbounds i8, ptr %1139, i64 8
  %1141 = getelementptr inbounds i8, ptr %1140, i64 2
  store i8 %1138, ptr %1141, align 1, !tbaa !14
  %1142 = load i32, ptr %15, align 4, !tbaa !16
  %1143 = trunc i32 %1142 to i8
  %1144 = load ptr, ptr %5, align 8, !tbaa !5
  %1145 = getelementptr inbounds i8, ptr %1144, i64 8
  %1146 = getelementptr inbounds i8, ptr %1145, i64 3
  store i8 %1143, ptr %1146, align 1, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  br label %1147

1147:                                             ; preds = %1112
  br label %1148

1148:                                             ; preds = %1147
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #3
  ret void
}

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

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

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

%struct.mask_x4_uint32_t = type { i32, i32, i32, i32 }

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

declare i32 @aead_random_generate_32() local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
declare hidden void @pyjamask_matrix_multiply_masked_a3861085(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @pyjamask_matrix_multiply_masked_63417021(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare hidden void @pyjamask_matrix_multiply_masked_692cf280(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local void @pyjamask_masked_96_encrypt(ptr nocapture noundef readonly %0, ptr nocapture noundef writeonly %1, ptr nocapture noundef readonly %2) local_unnamed_addr #2 {
  %4 = alloca %struct.mask_x4_uint32_t, align 4
  %5 = alloca %struct.mask_x4_uint32_t, align 4
  %6 = alloca %struct.mask_x4_uint32_t, align 4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #3
  %7 = tail call i32 @aead_random_generate_32() #3
  %8 = getelementptr inbounds i8, ptr %4, i64 4
  store i32 %7, ptr %8, align 4, !tbaa !5
  %9 = tail call i32 @aead_random_generate_32() #3
  %10 = getelementptr inbounds i8, ptr %4, i64 8
  store i32 %9, ptr %10, align 4, !tbaa !10
  %11 = tail call i32 @aead_random_generate_32() #3
  %12 = getelementptr inbounds i8, ptr %4, i64 12
  store i32 %11, ptr %12, align 4, !tbaa !11
  %13 = load i8, ptr %2, align 1, !tbaa !12
  %14 = zext i8 %13 to i32
  %15 = shl nuw i32 %14, 24
  %16 = getelementptr inbounds i8, ptr %2, i64 1
  %17 = load i8, ptr %16, align 1, !tbaa !12
  %18 = zext i8 %17 to i32
  %19 = shl nuw nsw i32 %18, 16
  %20 = or disjoint i32 %19, %15
  %21 = getelementptr inbounds i8, ptr %2, i64 2
  %22 = load i8, ptr %21, align 1, !tbaa !12
  %23 = zext i8 %22 to i32
  %24 = shl nuw nsw i32 %23, 8
  %25 = or disjoint i32 %20, %24
  %26 = getelementptr inbounds i8, ptr %2, i64 3
  %27 = load i8, ptr %26, align 1, !tbaa !12
  %28 = zext i8 %27 to i32
  %29 = or disjoint i32 %25, %28
  %30 = xor i32 %9, %29
  %31 = xor i32 %30, %7
  %32 = xor i32 %31, %11
  store i32 %32, ptr %4, align 4, !tbaa !13
  %33 = tail call i32 @aead_random_generate_32() #3
  %34 = getelementptr inbounds i8, ptr %5, i64 4
  store i32 %33, ptr %34, align 4, !tbaa !5
  %35 = tail call i32 @aead_random_generate_32() #3
  %36 = getelementptr inbounds i8, ptr %5, i64 8
  store i32 %35, ptr %36, align 4, !tbaa !10
  %37 = tail call i32 @aead_random_generate_32() #3
  %38 = getelementptr inbounds i8, ptr %5, i64 12
  store i32 %37, ptr %38, align 4, !tbaa !11
  %39 = getelementptr inbounds i8, ptr %2, i64 4
  %40 = load i8, ptr %39, align 1, !tbaa !12
  %41 = zext i8 %40 to i32
  %42 = shl nuw i32 %41, 24
  %43 = getelementptr inbounds i8, ptr %2, i64 5
  %44 = load i8, ptr %43, align 1, !tbaa !12
  %45 = zext i8 %44 to i32
  %46 = shl nuw nsw i32 %45, 16
  %47 = or disjoint i32 %46, %42
  %48 = getelementptr inbounds i8, ptr %2, i64 6
  %49 = load i8, ptr %48, align 1, !tbaa !12
  %50 = zext i8 %49 to i32
  %51 = shl nuw nsw i32 %50, 8
  %52 = or disjoint i32 %47, %51
  %53 = getelementptr inbounds i8, ptr %2, i64 7
  %54 = load i8, ptr %53, align 1, !tbaa !12
  %55 = zext i8 %54 to i32
  %56 = or disjoint i32 %52, %55
  %57 = xor i32 %35, %56
  %58 = xor i32 %57, %33
  %59 = xor i32 %58, %37
  store i32 %59, ptr %5, align 4, !tbaa !13
  %60 = tail call i32 @aead_random_generate_32() #3
  %61 = getelementptr inbounds i8, ptr %6, i64 4
  store i32 %60, ptr %61, align 4, !tbaa !5
  %62 = tail call i32 @aead_random_generate_32() #3
  %63 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 %62, ptr %63, align 4, !tbaa !10
  %64 = tail call i32 @aead_random_generate_32() #3
  %65 = getelementptr inbounds i8, ptr %6, i64 12
  store i32 %64, ptr %65, align 4, !tbaa !11
  %66 = getelementptr inbounds i8, ptr %2, i64 8
  %67 = load i8, ptr %66, align 1, !tbaa !12
  %68 = zext i8 %67 to i32
  %69 = shl nuw i32 %68, 24
  %70 = getelementptr inbounds i8, ptr %2, i64 9
  %71 = load i8, ptr %70, align 1, !tbaa !12
  %72 = zext i8 %71 to i32
  %73 = shl nuw nsw i32 %72, 16
  %74 = or disjoint i32 %73, %69
  %75 = getelementptr inbounds i8, ptr %2, i64 10
  %76 = load i8, ptr %75, align 1, !tbaa !12
  %77 = zext i8 %76 to i32
  %78 = shl nuw nsw i32 %77, 8
  %79 = or disjoint i32 %74, %78
  %80 = getelementptr inbounds i8, ptr %2, i64 11
  %81 = load i8, ptr %80, align 1, !tbaa !12
  %82 = zext i8 %81 to i32
  %83 = or disjoint i32 %79, %82
  %84 = xor i32 %62, %83
  %85 = xor i32 %84, %60
  %86 = xor i32 %85, %64
  store i32 %86, ptr %6, align 4, !tbaa !13
  br label %87

87:                                               ; preds = %3, %87
  %.0119 = phi ptr [ %0, %3 ], [ %427, %87 ]
  %.0117118 = phi i8 [ 0, %3 ], [ %426, %87 ]
  %88 = load i32, ptr %.0119, align 4, !tbaa !13
  %89 = load i32, ptr %4, align 4, !tbaa !13
  %90 = xor i32 %89, %88
  %91 = getelementptr inbounds i8, ptr %.0119, i64 4
  %92 = getelementptr inbounds i8, ptr %.0119, i64 12
  %93 = load i32, ptr %92, align 4, !tbaa !11
  %94 = load i32, ptr %12, align 4, !tbaa !11
  %95 = xor i32 %94, %93
  %96 = getelementptr inbounds i8, ptr %.0119, i64 16
  %97 = load i32, ptr %96, align 4, !tbaa !13
  %98 = load i32, ptr %5, align 4, !tbaa !13
  %99 = xor i32 %98, %97
  %100 = getelementptr inbounds i8, ptr %.0119, i64 20
  %101 = getelementptr inbounds i8, ptr %.0119, i64 28
  %102 = load i32, ptr %101, align 4, !tbaa !11
  %103 = load i32, ptr %38, align 4, !tbaa !11
  %104 = xor i32 %103, %102
  %105 = getelementptr inbounds i8, ptr %.0119, i64 32
  %106 = load i32, ptr %105, align 4, !tbaa !13
  %107 = load i32, ptr %6, align 4, !tbaa !13
  %108 = xor i32 %107, %106
  %109 = getelementptr inbounds i8, ptr %.0119, i64 36
  %110 = load <2 x i32>, ptr %109, align 4, !tbaa !14
  %111 = load <2 x i32>, ptr %61, align 4, !tbaa !14
  %112 = xor <2 x i32> %111, %110
  store <2 x i32> %112, ptr %61, align 4, !tbaa !14
  %113 = getelementptr inbounds i8, ptr %.0119, i64 44
  %114 = load i32, ptr %113, align 4, !tbaa !11
  %115 = load i32, ptr %65, align 4, !tbaa !11
  %116 = xor i32 %115, %114
  store i32 %116, ptr %65, align 4, !tbaa !11
  %117 = xor i32 %99, %90
  store i32 %117, ptr %4, align 4, !tbaa !13
  %118 = load <2 x i32>, ptr %91, align 4, !tbaa !14
  %119 = load <2 x i32>, ptr %8, align 4, !tbaa !14
  %120 = xor <2 x i32> %119, %118
  %121 = load <2 x i32>, ptr %100, align 4, !tbaa !14
  %122 = load <2 x i32>, ptr %34, align 4, !tbaa !14
  %123 = xor <2 x i32> %122, %121
  %124 = xor <2 x i32> %123, %120
  store <2 x i32> %124, ptr %8, align 4, !tbaa !14
  %125 = xor i32 %104, %95
  store i32 %125, ptr %12, align 4, !tbaa !11
  %126 = xor i32 %108, %99
  store i32 %126, ptr %5, align 4, !tbaa !13
  %127 = xor <2 x i32> %112, %123
  store <2 x i32> %127, ptr %34, align 4, !tbaa !14
  %128 = xor i32 %116, %104
  store i32 %128, ptr %38, align 4, !tbaa !11
  %129 = and i32 %126, %117
  %130 = xor i32 %129, %108
  store i32 %130, ptr %6, align 4, !tbaa !13
  %131 = call i32 @aead_random_generate_32() #3
  %132 = load i32, ptr %6, align 4, !tbaa !13
  %133 = xor i32 %132, %131
  store i32 %133, ptr %6, align 4, !tbaa !13
  %134 = load i32, ptr %34, align 4, !tbaa !5
  %135 = load i32, ptr %4, align 4, !tbaa !13
  %136 = and i32 %135, %134
  %137 = load i32, ptr %61, align 4, !tbaa !5
  %138 = load i32, ptr %8, align 4, !tbaa !5
  %139 = load i32, ptr %5, align 4, !tbaa !13
  %140 = and i32 %139, %138
  %141 = xor i32 %137, %136
  %142 = xor i32 %141, %140
  %143 = xor i32 %142, %131
  store i32 %143, ptr %61, align 4, !tbaa !5
  %144 = call i32 @aead_random_generate_32() #3
  %145 = load i32, ptr %6, align 4, !tbaa !13
  %146 = xor i32 %145, %144
  store i32 %146, ptr %6, align 4, !tbaa !13
  %147 = load i32, ptr %36, align 4, !tbaa !10
  %148 = load i32, ptr %4, align 4, !tbaa !13
  %149 = and i32 %148, %147
  %150 = load i32, ptr %63, align 4, !tbaa !10
  %151 = load i32, ptr %10, align 4, !tbaa !10
  %152 = load i32, ptr %5, align 4, !tbaa !13
  %153 = and i32 %152, %151
  %154 = xor i32 %150, %149
  %155 = xor i32 %154, %153
  %156 = xor i32 %155, %144
  store i32 %156, ptr %63, align 4, !tbaa !10
  %157 = call i32 @aead_random_generate_32() #3
  %158 = load i32, ptr %6, align 4, !tbaa !13
  %159 = xor i32 %158, %157
  store i32 %159, ptr %6, align 4, !tbaa !13
  %160 = load i32, ptr %38, align 4, !tbaa !11
  %161 = load i32, ptr %4, align 4, !tbaa !13
  %162 = and i32 %161, %160
  %163 = load i32, ptr %65, align 4, !tbaa !11
  %164 = load i32, ptr %12, align 4, !tbaa !11
  %165 = load i32, ptr %5, align 4, !tbaa !13
  %166 = and i32 %165, %164
  %167 = xor i32 %163, %162
  %168 = xor i32 %167, %166
  %169 = xor i32 %168, %157
  store i32 %169, ptr %65, align 4, !tbaa !11
  %170 = load i32, ptr %8, align 4, !tbaa !5
  %171 = load i32, ptr %34, align 4, !tbaa !5
  %172 = and i32 %171, %170
  %173 = load i32, ptr %61, align 4, !tbaa !5
  %174 = xor i32 %173, %172
  store i32 %174, ptr %61, align 4, !tbaa !5
  %175 = call i32 @aead_random_generate_32() #3
  %176 = load i32, ptr %61, align 4, !tbaa !5
  %177 = xor i32 %176, %175
  store i32 %177, ptr %61, align 4, !tbaa !5
  %178 = load i32, ptr %36, align 4, !tbaa !10
  %179 = load i32, ptr %8, align 4, !tbaa !5
  %180 = and i32 %179, %178
  %181 = load i32, ptr %63, align 4, !tbaa !10
  %182 = load i32, ptr %10, align 4, !tbaa !10
  %183 = load i32, ptr %34, align 4, !tbaa !5
  %184 = and i32 %183, %182
  %185 = xor i32 %181, %180
  %186 = xor i32 %185, %184
  %187 = xor i32 %186, %175
  store i32 %187, ptr %63, align 4, !tbaa !10
  %188 = call i32 @aead_random_generate_32() #3
  %189 = load i32, ptr %61, align 4, !tbaa !5
  %190 = xor i32 %189, %188
  store i32 %190, ptr %61, align 4, !tbaa !5
  %191 = load i32, ptr %38, align 4, !tbaa !11
  %192 = load i32, ptr %8, align 4, !tbaa !5
  %193 = and i32 %192, %191
  %194 = load i32, ptr %65, align 4, !tbaa !11
  %195 = load i32, ptr %12, align 4, !tbaa !11
  %196 = load i32, ptr %34, align 4, !tbaa !5
  %197 = and i32 %196, %195
  %198 = xor i32 %194, %193
  %199 = xor i32 %198, %197
  %200 = xor i32 %199, %188
  store i32 %200, ptr %65, align 4, !tbaa !11
  %201 = load i32, ptr %10, align 4, !tbaa !10
  %202 = load i32, ptr %36, align 4, !tbaa !10
  %203 = and i32 %202, %201
  %204 = load i32, ptr %63, align 4, !tbaa !10
  %205 = xor i32 %204, %203
  store i32 %205, ptr %63, align 4, !tbaa !10
  %206 = call i32 @aead_random_generate_32() #3
  %207 = load i32, ptr %63, align 4, !tbaa !10
  %208 = xor i32 %207, %206
  store i32 %208, ptr %63, align 4, !tbaa !10
  %209 = load i32, ptr %38, align 4, !tbaa !11
  %210 = load i32, ptr %10, align 4, !tbaa !10
  %211 = and i32 %210, %209
  %212 = load i32, ptr %65, align 4, !tbaa !11
  %213 = load i32, ptr %12, align 4, !tbaa !11
  %214 = load i32, ptr %36, align 4, !tbaa !10
  %215 = and i32 %214, %213
  %216 = and i32 %213, %209
  %217 = xor i32 %212, %211
  %218 = xor i32 %217, %216
  %219 = xor i32 %218, %215
  %220 = xor i32 %219, %206
  store i32 %220, ptr %65, align 4, !tbaa !11
  %221 = load i32, ptr %5, align 4, !tbaa !13
  %222 = load i32, ptr %6, align 4, !tbaa !13
  %223 = and i32 %222, %221
  %224 = load i32, ptr %4, align 4, !tbaa !13
  %225 = xor i32 %224, %223
  store i32 %225, ptr %4, align 4, !tbaa !13
  %226 = call i32 @aead_random_generate_32() #3
  %227 = load i32, ptr %4, align 4, !tbaa !13
  %228 = xor i32 %227, %226
  store i32 %228, ptr %4, align 4, !tbaa !13
  %229 = load i32, ptr %61, align 4, !tbaa !5
  %230 = load i32, ptr %5, align 4, !tbaa !13
  %231 = and i32 %230, %229
  %232 = load i32, ptr %8, align 4, !tbaa !5
  %233 = load i32, ptr %34, align 4, !tbaa !5
  %234 = load i32, ptr %6, align 4, !tbaa !13
  %235 = and i32 %234, %233
  %236 = xor i32 %232, %231
  %237 = xor i32 %236, %235
  %238 = xor i32 %237, %226
  store i32 %238, ptr %8, align 4, !tbaa !5
  %239 = call i32 @aead_random_generate_32() #3
  %240 = load i32, ptr %4, align 4, !tbaa !13
  %241 = xor i32 %240, %239
  store i32 %241, ptr %4, align 4, !tbaa !13
  %242 = load i32, ptr %63, align 4, !tbaa !10
  %243 = load i32, ptr %5, align 4, !tbaa !13
  %244 = and i32 %243, %242
  %245 = load i32, ptr %10, align 4, !tbaa !10
  %246 = load i32, ptr %36, align 4, !tbaa !10
  %247 = load i32, ptr %6, align 4, !tbaa !13
  %248 = and i32 %247, %246
  %249 = xor i32 %245, %244
  %250 = xor i32 %249, %248
  %251 = xor i32 %250, %239
  store i32 %251, ptr %10, align 4, !tbaa !10
  %252 = call i32 @aead_random_generate_32() #3
  %253 = load i32, ptr %4, align 4, !tbaa !13
  %254 = xor i32 %253, %252
  store i32 %254, ptr %4, align 4, !tbaa !13
  %255 = load i32, ptr %65, align 4, !tbaa !11
  %256 = load i32, ptr %5, align 4, !tbaa !13
  %257 = and i32 %256, %255
  %258 = load i32, ptr %12, align 4, !tbaa !11
  %259 = load i32, ptr %38, align 4, !tbaa !11
  %260 = load i32, ptr %6, align 4, !tbaa !13
  %261 = and i32 %260, %259
  %262 = xor i32 %258, %257
  %263 = xor i32 %262, %261
  %264 = xor i32 %263, %252
  store i32 %264, ptr %12, align 4, !tbaa !11
  %265 = load i32, ptr %34, align 4, !tbaa !5
  %266 = load i32, ptr %61, align 4, !tbaa !5
  %267 = and i32 %266, %265
  %268 = load i32, ptr %8, align 4, !tbaa !5
  %269 = xor i32 %268, %267
  store i32 %269, ptr %8, align 4, !tbaa !5
  %270 = call i32 @aead_random_generate_32() #3
  %271 = load i32, ptr %8, align 4, !tbaa !5
  %272 = xor i32 %271, %270
  store i32 %272, ptr %8, align 4, !tbaa !5
  %273 = load i32, ptr %63, align 4, !tbaa !10
  %274 = load i32, ptr %34, align 4, !tbaa !5
  %275 = and i32 %274, %273
  %276 = load i32, ptr %10, align 4, !tbaa !10
  %277 = load i32, ptr %36, align 4, !tbaa !10
  %278 = load i32, ptr %61, align 4, !tbaa !5
  %279 = and i32 %278, %277
  %280 = xor i32 %276, %275
  %281 = xor i32 %280, %279
  %282 = xor i32 %281, %270
  store i32 %282, ptr %10, align 4, !tbaa !10
  %283 = call i32 @aead_random_generate_32() #3
  %284 = load i32, ptr %8, align 4, !tbaa !5
  %285 = xor i32 %284, %283
  store i32 %285, ptr %8, align 4, !tbaa !5
  %286 = load i32, ptr %65, align 4, !tbaa !11
  %287 = load i32, ptr %34, align 4, !tbaa !5
  %288 = and i32 %287, %286
  %289 = load i32, ptr %12, align 4, !tbaa !11
  %290 = load i32, ptr %38, align 4, !tbaa !11
  %291 = load i32, ptr %61, align 4, !tbaa !5
  %292 = and i32 %291, %290
  %293 = xor i32 %289, %288
  %294 = xor i32 %293, %292
  %295 = xor i32 %294, %283
  store i32 %295, ptr %12, align 4, !tbaa !11
  %296 = load i32, ptr %36, align 4, !tbaa !10
  %297 = load i32, ptr %63, align 4, !tbaa !10
  %298 = and i32 %297, %296
  %299 = load i32, ptr %10, align 4, !tbaa !10
  %300 = xor i32 %299, %298
  store i32 %300, ptr %10, align 4, !tbaa !10
  %301 = call i32 @aead_random_generate_32() #3
  %302 = load i32, ptr %10, align 4, !tbaa !10
  %303 = xor i32 %302, %301
  store i32 %303, ptr %10, align 4, !tbaa !10
  %304 = load i32, ptr %65, align 4, !tbaa !11
  %305 = load i32, ptr %36, align 4, !tbaa !10
  %306 = and i32 %305, %304
  %307 = load i32, ptr %12, align 4, !tbaa !11
  %308 = load i32, ptr %38, align 4, !tbaa !11
  %309 = load i32, ptr %63, align 4, !tbaa !10
  %310 = and i32 %309, %308
  %311 = and i32 %308, %304
  %312 = xor i32 %307, %306
  %313 = xor i32 %312, %311
  %314 = xor i32 %313, %310
  %315 = xor i32 %314, %301
  store i32 %315, ptr %12, align 4, !tbaa !11
  %316 = load i32, ptr %4, align 4, !tbaa !13
  %317 = load i32, ptr %6, align 4, !tbaa !13
  %318 = and i32 %317, %316
  %319 = load i32, ptr %5, align 4, !tbaa !13
  %320 = xor i32 %319, %318
  store i32 %320, ptr %5, align 4, !tbaa !13
  %321 = call i32 @aead_random_generate_32() #3
  %322 = load i32, ptr %5, align 4, !tbaa !13
  %323 = xor i32 %322, %321
  store i32 %323, ptr %5, align 4, !tbaa !13
  %324 = load i32, ptr %61, align 4, !tbaa !5
  %325 = load i32, ptr %4, align 4, !tbaa !13
  %326 = and i32 %325, %324
  %327 = load i32, ptr %34, align 4, !tbaa !5
  %328 = load i32, ptr %8, align 4, !tbaa !5
  %329 = load i32, ptr %6, align 4, !tbaa !13
  %330 = and i32 %329, %328
  %331 = xor i32 %327, %326
  %332 = xor i32 %331, %330
  %333 = xor i32 %332, %321
  store i32 %333, ptr %34, align 4, !tbaa !5
  %334 = call i32 @aead_random_generate_32() #3
  %335 = load i32, ptr %5, align 4, !tbaa !13
  %336 = xor i32 %335, %334
  store i32 %336, ptr %5, align 4, !tbaa !13
  %337 = load i32, ptr %63, align 4, !tbaa !10
  %338 = load i32, ptr %4, align 4, !tbaa !13
  %339 = and i32 %338, %337
  %340 = load i32, ptr %36, align 4, !tbaa !10
  %341 = load i32, ptr %10, align 4, !tbaa !10
  %342 = load i32, ptr %6, align 4, !tbaa !13
  %343 = and i32 %342, %341
  %344 = xor i32 %340, %339
  %345 = xor i32 %344, %343
  %346 = xor i32 %345, %334
  store i32 %346, ptr %36, align 4, !tbaa !10
  %347 = call i32 @aead_random_generate_32() #3
  %348 = load i32, ptr %5, align 4, !tbaa !13
  %349 = xor i32 %348, %347
  store i32 %349, ptr %5, align 4, !tbaa !13
  %350 = load i32, ptr %65, align 4, !tbaa !11
  %351 = load i32, ptr %4, align 4, !tbaa !13
  %352 = and i32 %351, %350
  %353 = load i32, ptr %38, align 4, !tbaa !11
  %354 = load i32, ptr %12, align 4, !tbaa !11
  %355 = load i32, ptr %6, align 4, !tbaa !13
  %356 = and i32 %355, %354
  %357 = xor i32 %353, %352
  %358 = xor i32 %357, %356
  %359 = xor i32 %358, %347
  store i32 %359, ptr %38, align 4, !tbaa !11
  %360 = load i32, ptr %8, align 4, !tbaa !5
  %361 = load i32, ptr %61, align 4, !tbaa !5
  %362 = and i32 %361, %360
  %363 = load i32, ptr %34, align 4, !tbaa !5
  %364 = xor i32 %363, %362
  store i32 %364, ptr %34, align 4, !tbaa !5
  %365 = call i32 @aead_random_generate_32() #3
  %366 = load i32, ptr %34, align 4, !tbaa !5
  %367 = xor i32 %366, %365
  store i32 %367, ptr %34, align 4, !tbaa !5
  %368 = load i32, ptr %63, align 4, !tbaa !10
  %369 = load i32, ptr %8, align 4, !tbaa !5
  %370 = and i32 %369, %368
  %371 = load i32, ptr %36, align 4, !tbaa !10
  %372 = load i32, ptr %10, align 4, !tbaa !10
  %373 = load i32, ptr %61, align 4, !tbaa !5
  %374 = and i32 %373, %372
  %375 = xor i32 %371, %370
  %376 = xor i32 %375, %374
  %377 = xor i32 %376, %365
  store i32 %377, ptr %36, align 4, !tbaa !10
  %378 = call i32 @aead_random_generate_32() #3
  %379 = load i32, ptr %34, align 4, !tbaa !5
  %380 = xor i32 %379, %378
  store i32 %380, ptr %34, align 4, !tbaa !5
  %381 = load i32, ptr %65, align 4, !tbaa !11
  %382 = load i32, ptr %8, align 4, !tbaa !5
  %383 = and i32 %382, %381
  %384 = load i32, ptr %38, align 4, !tbaa !11
  %385 = load i32, ptr %12, align 4, !tbaa !11
  %386 = load i32, ptr %61, align 4, !tbaa !5
  %387 = and i32 %386, %385
  %388 = xor i32 %384, %383
  %389 = xor i32 %388, %387
  %390 = xor i32 %389, %378
  store i32 %390, ptr %38, align 4, !tbaa !11
  %391 = load i32, ptr %10, align 4, !tbaa !10
  %392 = load i32, ptr %63, align 4, !tbaa !10
  %393 = and i32 %392, %391
  %394 = load i32, ptr %36, align 4, !tbaa !10
  %395 = xor i32 %394, %393
  store i32 %395, ptr %36, align 4, !tbaa !10
  %396 = call i32 @aead_random_generate_32() #3
  %397 = load i32, ptr %36, align 4, !tbaa !10
  %398 = xor i32 %397, %396
  %399 = load i32, ptr %65, align 4, !tbaa !11
  %400 = load i32, ptr %10, align 4, !tbaa !10
  %401 = and i32 %400, %399
  %402 = load i32, ptr %38, align 4, !tbaa !11
  %403 = load i32, ptr %12, align 4, !tbaa !11
  %404 = load i32, ptr %63, align 4, !tbaa !10
  %405 = and i32 %404, %403
  %406 = and i32 %403, %399
  %407 = xor i32 %402, %401
  %408 = xor i32 %407, %406
  %409 = xor i32 %408, %405
  %410 = xor i32 %409, %396
  %411 = load i32, ptr %4, align 4, !tbaa !13
  %412 = load i32, ptr %6, align 4, !tbaa !13
  %413 = xor i32 %412, %411
  %414 = load i32, ptr %8, align 4, !tbaa !5
  %415 = load i32, ptr %61, align 4, !tbaa !5
  %416 = xor i32 %415, %414
  store i32 %416, ptr %61, align 4, !tbaa !5
  %417 = xor i32 %404, %400
  store i32 %417, ptr %63, align 4, !tbaa !10
  %418 = xor i32 %403, %399
  store i32 %418, ptr %65, align 4, !tbaa !11
  %419 = xor i32 %413, -1
  store i32 %419, ptr %6, align 4, !tbaa !13
  %420 = load i32, ptr %5, align 4, !tbaa !13
  %421 = xor i32 %420, %411
  store i32 %421, ptr %5, align 4, !tbaa !13
  %422 = load i32, ptr %34, align 4, !tbaa !5
  %423 = xor i32 %422, %414
  store i32 %423, ptr %34, align 4, !tbaa !5
  %424 = xor i32 %400, %398
  store i32 %424, ptr %36, align 4, !tbaa !10
  %425 = xor i32 %410, %403
  store i32 %425, ptr %38, align 4, !tbaa !11
  store i32 %420, ptr %4, align 4, !tbaa !13
  store i32 %422, ptr %8, align 4, !tbaa !5
  store i32 %398, ptr %10, align 4, !tbaa !10
  store i32 %410, ptr %12, align 4, !tbaa !11
  call void @pyjamask_matrix_multiply_masked_a3861085(ptr noundef nonnull %4)
  call void @pyjamask_matrix_multiply_masked_63417021(ptr noundef nonnull %5)
  call void @pyjamask_matrix_multiply_masked_692cf280(ptr noundef nonnull %6)
  %426 = add nuw nsw i8 %.0117118, 1
  %427 = getelementptr inbounds i8, ptr %.0119, i64 48
  %exitcond.not = icmp eq i8 %426, 14
  br i1 %exitcond.not, label %428, label %87, !llvm.loop !15

428:                                              ; preds = %87
  %429 = load i32, ptr %427, align 4, !tbaa !13
  %430 = load i32, ptr %4, align 4, !tbaa !13
  %431 = xor i32 %430, %429
  %432 = getelementptr inbounds i8, ptr %.0119, i64 52
  %433 = load i32, ptr %432, align 4, !tbaa !5
  %434 = load i32, ptr %8, align 4, !tbaa !5
  %435 = xor i32 %434, %433
  %436 = getelementptr inbounds i8, ptr %.0119, i64 56
  %437 = load i32, ptr %436, align 4, !tbaa !10
  %438 = load i32, ptr %10, align 4, !tbaa !10
  %439 = xor i32 %438, %437
  %440 = getelementptr inbounds i8, ptr %.0119, i64 60
  %441 = load i32, ptr %440, align 4, !tbaa !11
  %442 = load i32, ptr %12, align 4, !tbaa !11
  %443 = xor i32 %442, %441
  %444 = getelementptr inbounds i8, ptr %.0119, i64 64
  %445 = load i32, ptr %444, align 4, !tbaa !13
  %446 = load i32, ptr %5, align 4, !tbaa !13
  %447 = xor i32 %446, %445
  %448 = getelementptr inbounds i8, ptr %.0119, i64 68
  %449 = load i32, ptr %448, align 4, !tbaa !5
  %450 = load i32, ptr %34, align 4, !tbaa !5
  %451 = xor i32 %450, %449
  %452 = getelementptr inbounds i8, ptr %.0119, i64 72
  %453 = load i32, ptr %452, align 4, !tbaa !10
  %454 = load i32, ptr %36, align 4, !tbaa !10
  %455 = xor i32 %454, %453
  %456 = getelementptr inbounds i8, ptr %.0119, i64 76
  %457 = load i32, ptr %456, align 4, !tbaa !11
  %458 = load i32, ptr %38, align 4, !tbaa !11
  %459 = xor i32 %458, %457
  %460 = getelementptr inbounds i8, ptr %.0119, i64 80
  %461 = load i32, ptr %460, align 4, !tbaa !13
  %462 = load i32, ptr %6, align 4, !tbaa !13
  %463 = xor i32 %462, %461
  %464 = getelementptr inbounds i8, ptr %.0119, i64 84
  %465 = load i32, ptr %464, align 4, !tbaa !5
  %466 = load i32, ptr %61, align 4, !tbaa !5
  %467 = xor i32 %466, %465
  %468 = getelementptr inbounds i8, ptr %.0119, i64 88
  %469 = load i32, ptr %468, align 4, !tbaa !10
  %470 = load i32, ptr %63, align 4, !tbaa !10
  %471 = xor i32 %470, %469
  %472 = getelementptr inbounds i8, ptr %.0119, i64 92
  %473 = load i32, ptr %472, align 4, !tbaa !11
  %474 = load i32, ptr %65, align 4, !tbaa !11
  %475 = xor i32 %474, %473
  %476 = xor i32 %435, %431
  %477 = xor i32 %476, %439
  %478 = xor i32 %477, %443
  %479 = lshr i32 %478, 24
  %480 = trunc nuw i32 %479 to i8
  store i8 %480, ptr %1, align 1, !tbaa !12
  %481 = lshr i32 %478, 16
  %482 = trunc i32 %481 to i8
  %483 = getelementptr inbounds i8, ptr %1, i64 1
  store i8 %482, ptr %483, align 1, !tbaa !12
  %484 = lshr i32 %478, 8
  %485 = trunc i32 %484 to i8
  %486 = getelementptr inbounds i8, ptr %1, i64 2
  store i8 %485, ptr %486, align 1, !tbaa !12
  %487 = trunc i32 %478 to i8
  %488 = getelementptr inbounds i8, ptr %1, i64 3
  store i8 %487, ptr %488, align 1, !tbaa !12
  %489 = xor i32 %451, %447
  %490 = xor i32 %489, %455
  %491 = xor i32 %490, %459
  %492 = lshr i32 %491, 24
  %493 = trunc nuw i32 %492 to i8
  %494 = getelementptr inbounds i8, ptr %1, i64 4
  store i8 %493, ptr %494, align 1, !tbaa !12
  %495 = lshr i32 %491, 16
  %496 = trunc i32 %495 to i8
  %497 = getelementptr inbounds i8, ptr %1, i64 5
  store i8 %496, ptr %497, align 1, !tbaa !12
  %498 = lshr i32 %491, 8
  %499 = trunc i32 %498 to i8
  %500 = getelementptr inbounds i8, ptr %1, i64 6
  store i8 %499, ptr %500, align 1, !tbaa !12
  %501 = trunc i32 %491 to i8
  %502 = getelementptr inbounds i8, ptr %1, i64 7
  store i8 %501, ptr %502, align 1, !tbaa !12
  %503 = xor i32 %467, %463
  %504 = xor i32 %503, %471
  %505 = xor i32 %504, %475
  %506 = lshr i32 %505, 24
  %507 = trunc nuw i32 %506 to i8
  %508 = getelementptr inbounds i8, ptr %1, i64 8
  store i8 %507, ptr %508, align 1, !tbaa !12
  %509 = lshr i32 %505, 16
  %510 = trunc i32 %509 to i8
  %511 = getelementptr inbounds i8, ptr %1, i64 9
  store i8 %510, ptr %511, align 1, !tbaa !12
  %512 = lshr i32 %505, 8
  %513 = trunc i32 %512 to i8
  %514 = getelementptr inbounds i8, ptr %1, i64 10
  store i8 %513, ptr %514, align 1, !tbaa !12
  %515 = trunc i32 %505 to i8
  %516 = getelementptr inbounds i8, ptr %1, i64 11
  store i8 %515, ptr %516, align 1, !tbaa !12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #3
  ret void
}

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

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

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


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,LCSSAPass,LoopRotatePass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass