; 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_128_key_schedule_t = type { [60 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
define dso_local void @pyjamask_masked_128_decrypt(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 %struct.mask_x4_uint32_t, align 4
  %12 = alloca i32, align 4
  %13 = alloca i8, align 1
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = 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
  %18 = load ptr, ptr %4, align 8, !tbaa !5
  %19 = getelementptr inbounds %struct.pyjamask_masked_128_key_schedule_t, ptr %18, i32 0, i32 0
  %20 = getelementptr inbounds [60 x %struct.mask_x4_uint32_t], ptr %19, i64 0, i64 0
  %21 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %20, i64 56
  store ptr %21, 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 16, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #3
  br label %22

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

61:                                               ; preds = %22
  br label %62

62:                                               ; preds = %61
  br label %63

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

106:                                              ; preds = %63
  br label %107

107:                                              ; preds = %106
  br label %108

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

151:                                              ; preds = %108
  br label %152

152:                                              ; preds = %151
  br label %153

153:                                              ; preds = %152
  %154 = call i32 @aead_random_generate_32()
  %155 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  store i32 %154, ptr %155, align 4, !tbaa !9
  %156 = call i32 @aead_random_generate_32()
  %157 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  store i32 %156, ptr %157, align 4, !tbaa !12
  %158 = call i32 @aead_random_generate_32()
  %159 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  store i32 %158, ptr %159, align 4, !tbaa !13
  %160 = load ptr, ptr %6, align 8, !tbaa !5
  %161 = getelementptr inbounds i8, ptr %160, i64 12
  %162 = getelementptr inbounds i8, ptr %161, i64 0
  %163 = load i8, ptr %162, align 1, !tbaa !14
  %164 = zext i8 %163 to i32
  %165 = shl i32 %164, 24
  %166 = load ptr, ptr %6, align 8, !tbaa !5
  %167 = getelementptr inbounds i8, ptr %166, i64 12
  %168 = getelementptr inbounds i8, ptr %167, i64 1
  %169 = load i8, ptr %168, align 1, !tbaa !14
  %170 = zext i8 %169 to i32
  %171 = shl i32 %170, 16
  %172 = or i32 %165, %171
  %173 = load ptr, ptr %6, align 8, !tbaa !5
  %174 = getelementptr inbounds i8, ptr %173, i64 12
  %175 = getelementptr inbounds i8, ptr %174, i64 2
  %176 = load i8, ptr %175, align 1, !tbaa !14
  %177 = zext i8 %176 to i32
  %178 = shl i32 %177, 8
  %179 = or i32 %172, %178
  %180 = load ptr, ptr %6, align 8, !tbaa !5
  %181 = getelementptr inbounds i8, ptr %180, i64 12
  %182 = getelementptr inbounds i8, ptr %181, i64 3
  %183 = load i8, ptr %182, align 1, !tbaa !14
  %184 = zext i8 %183 to i32
  %185 = or i32 %179, %184
  %186 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = xor i32 %185, %187
  %189 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %190 = load i32, ptr %189, align 4, !tbaa !12
  %191 = xor i32 %188, %190
  %192 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %193 = load i32, ptr %192, align 4, !tbaa !13
  %194 = xor i32 %191, %193
  %195 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  store i32 %194, ptr %195, align 4, !tbaa !15
  br label %196

196:                                              ; preds = %153
  br label %197

197:                                              ; preds = %196
  br label %198

198:                                              ; preds = %197
  %199 = load ptr, ptr %7, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %199, i64 0
  %201 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %200, i32 0, i32 0
  %202 = load i32, ptr %201, align 4, !tbaa !15
  %203 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %204 = load i32, ptr %203, align 4, !tbaa !15
  %205 = xor i32 %204, %202
  store i32 %205, ptr %203, align 4, !tbaa !15
  %206 = load ptr, ptr %7, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %206, i64 0
  %208 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %207, i32 0, i32 1
  %209 = load i32, ptr %208, align 4, !tbaa !9
  %210 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = xor i32 %211, %209
  store i32 %212, ptr %210, align 4, !tbaa !9
  %213 = load ptr, ptr %7, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %213, i64 0
  %215 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %214, i32 0, i32 2
  %216 = load i32, ptr %215, align 4, !tbaa !12
  %217 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %218 = load i32, ptr %217, align 4, !tbaa !12
  %219 = xor i32 %218, %216
  store i32 %219, ptr %217, align 4, !tbaa !12
  %220 = load ptr, ptr %7, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %220, i64 0
  %222 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %221, i32 0, i32 3
  %223 = load i32, ptr %222, align 4, !tbaa !13
  %224 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %225 = load i32, ptr %224, align 4, !tbaa !13
  %226 = xor i32 %225, %223
  store i32 %226, ptr %224, align 4, !tbaa !13
  br label %227

227:                                              ; preds = %198
  br label %228

228:                                              ; preds = %227
  br label %229

229:                                              ; preds = %228
  %230 = load ptr, ptr %7, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %230, i64 1
  %232 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %231, i32 0, i32 0
  %233 = load i32, ptr %232, align 4, !tbaa !15
  %234 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %235 = load i32, ptr %234, align 4, !tbaa !15
  %236 = xor i32 %235, %233
  store i32 %236, ptr %234, align 4, !tbaa !15
  %237 = load ptr, ptr %7, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %237, i64 1
  %239 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %238, i32 0, i32 1
  %240 = load i32, ptr %239, align 4, !tbaa !9
  %241 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = xor i32 %242, %240
  store i32 %243, ptr %241, align 4, !tbaa !9
  %244 = load ptr, ptr %7, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %244, i64 1
  %246 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %245, i32 0, i32 2
  %247 = load i32, ptr %246, align 4, !tbaa !12
  %248 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %249 = load i32, ptr %248, align 4, !tbaa !12
  %250 = xor i32 %249, %247
  store i32 %250, ptr %248, align 4, !tbaa !12
  %251 = load ptr, ptr %7, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %251, i64 1
  %253 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %252, i32 0, i32 3
  %254 = load i32, ptr %253, align 4, !tbaa !13
  %255 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %256 = load i32, ptr %255, align 4, !tbaa !13
  %257 = xor i32 %256, %254
  store i32 %257, ptr %255, align 4, !tbaa !13
  br label %258

258:                                              ; preds = %229
  br label %259

259:                                              ; preds = %258
  br label %260

260:                                              ; preds = %259
  %261 = load ptr, ptr %7, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %261, i64 2
  %263 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %262, i32 0, i32 0
  %264 = load i32, ptr %263, align 4, !tbaa !15
  %265 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %266 = load i32, ptr %265, align 4, !tbaa !15
  %267 = xor i32 %266, %264
  store i32 %267, ptr %265, align 4, !tbaa !15
  %268 = load ptr, ptr %7, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %268, i64 2
  %270 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %269, i32 0, i32 1
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = xor i32 %273, %271
  store i32 %274, ptr %272, align 4, !tbaa !9
  %275 = load ptr, ptr %7, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %275, i64 2
  %277 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %276, i32 0, i32 2
  %278 = load i32, ptr %277, align 4, !tbaa !12
  %279 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %280 = load i32, ptr %279, align 4, !tbaa !12
  %281 = xor i32 %280, %278
  store i32 %281, ptr %279, align 4, !tbaa !12
  %282 = load ptr, ptr %7, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %282, i64 2
  %284 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %283, i32 0, i32 3
  %285 = load i32, ptr %284, align 4, !tbaa !13
  %286 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %287 = load i32, ptr %286, align 4, !tbaa !13
  %288 = xor i32 %287, %285
  store i32 %288, ptr %286, align 4, !tbaa !13
  br label %289

289:                                              ; preds = %260
  br label %290

290:                                              ; preds = %289
  br label %291

291:                                              ; preds = %290
  %292 = load ptr, ptr %7, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %292, i64 3
  %294 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %293, i32 0, i32 0
  %295 = load i32, ptr %294, align 4, !tbaa !15
  %296 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %297 = load i32, ptr %296, align 4, !tbaa !15
  %298 = xor i32 %297, %295
  store i32 %298, ptr %296, align 4, !tbaa !15
  %299 = load ptr, ptr %7, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %299, i64 3
  %301 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %300, i32 0, i32 1
  %302 = load i32, ptr %301, align 4, !tbaa !9
  %303 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = xor i32 %304, %302
  store i32 %305, ptr %303, align 4, !tbaa !9
  %306 = load ptr, ptr %7, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %306, i64 3
  %308 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %307, i32 0, i32 2
  %309 = load i32, ptr %308, align 4, !tbaa !12
  %310 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %311 = load i32, ptr %310, align 4, !tbaa !12
  %312 = xor i32 %311, %309
  store i32 %312, ptr %310, align 4, !tbaa !12
  %313 = load ptr, ptr %7, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %313, i64 3
  %315 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %314, i32 0, i32 3
  %316 = load i32, ptr %315, align 4, !tbaa !13
  %317 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %318 = load i32, ptr %317, align 4, !tbaa !13
  %319 = xor i32 %318, %316
  store i32 %319, ptr %317, align 4, !tbaa !13
  br label %320

320:                                              ; preds = %291
  br label %321

321:                                              ; preds = %320
  %322 = load ptr, ptr %7, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %322, i64 -4
  store ptr %323, ptr %7, align 8, !tbaa !5
  store i8 0, ptr %13, align 1, !tbaa !14
  br label %324

324:                                              ; preds = %1356, %321
  %325 = load i8, ptr %13, align 1, !tbaa !14
  %326 = zext i8 %325 to i32
  %327 = icmp slt i32 %326, 14
  br i1 %327, label %328, label %1361

328:                                              ; preds = %324
  call void @pyjamask_matrix_multiply_masked_2037a121(ptr noundef %8)
  call void @pyjamask_matrix_multiply_masked_108ff2a0(ptr noundef %9)
  call void @pyjamask_matrix_multiply_masked_9054d8c0(ptr noundef %10)
  call void @pyjamask_matrix_multiply_masked_3354b117(ptr noundef %11)
  br label %329

329:                                              ; preds = %328
  %330 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %331 = load i32, ptr %330, align 4, !tbaa !15
  %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 %10, i32 0, i32 0
  %336 = load i32, ptr %335, align 4, !tbaa !15
  %337 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %338 = load i32, ptr %337, align 4, !tbaa !15
  %339 = xor i32 %338, %336
  store i32 %339, ptr %337, align 4, !tbaa !15
  %340 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %341 = load i32, ptr %340, align 4, !tbaa !15
  %342 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %343 = load i32, ptr %342, align 4, !tbaa !15
  %344 = xor i32 %343, %341
  store i32 %344, ptr %342, align 4, !tbaa !15
  %345 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %348 = load i32, ptr %347, align 4, !tbaa !9
  %349 = xor i32 %348, %346
  store i32 %349, ptr %347, align 4, !tbaa !9
  %350 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %351 = load i32, ptr %350, align 4, !tbaa !9
  %352 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %353 = load i32, ptr %352, align 4, !tbaa !9
  %354 = xor i32 %353, %351
  store i32 %354, ptr %352, align 4, !tbaa !9
  %355 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %356 = load i32, ptr %355, align 4, !tbaa !9
  %357 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %358 = load i32, ptr %357, align 4, !tbaa !9
  %359 = xor i32 %358, %356
  store i32 %359, ptr %357, align 4, !tbaa !9
  %360 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %361 = load i32, ptr %360, align 4, !tbaa !12
  %362 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %363 = load i32, ptr %362, align 4, !tbaa !12
  %364 = xor i32 %363, %361
  store i32 %364, ptr %362, align 4, !tbaa !12
  %365 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %366 = load i32, ptr %365, align 4, !tbaa !12
  %367 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %368 = load i32, ptr %367, align 4, !tbaa !12
  %369 = xor i32 %368, %366
  store i32 %369, ptr %367, align 4, !tbaa !12
  %370 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %371 = load i32, ptr %370, align 4, !tbaa !12
  %372 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %373 = load i32, ptr %372, align 4, !tbaa !12
  %374 = xor i32 %373, %371
  store i32 %374, ptr %372, align 4, !tbaa !12
  %375 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %376 = load i32, ptr %375, align 4, !tbaa !13
  %377 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %378 = load i32, ptr %377, align 4, !tbaa !13
  %379 = xor i32 %378, %376
  store i32 %379, ptr %377, align 4, !tbaa !13
  %380 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %381 = load i32, ptr %380, align 4, !tbaa !13
  %382 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %383 = load i32, ptr %382, align 4, !tbaa !13
  %384 = xor i32 %383, %381
  store i32 %384, ptr %382, align 4, !tbaa !13
  %385 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %386 = load i32, ptr %385, align 4, !tbaa !13
  %387 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %388 = load i32, ptr %387, align 4, !tbaa !13
  %389 = xor i32 %388, %386
  store i32 %389, ptr %387, align 4, !tbaa !13
  br label %390

390:                                              ; preds = %329
  br label %391

391:                                              ; preds = %390
  br label %392

392:                                              ; preds = %391
  %393 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %394 = load i32, ptr %393, align 4, !tbaa !15
  %395 = xor i32 %394, -1
  %396 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  store i32 %395, ptr %396, align 4, !tbaa !15
  br label %397

397:                                              ; preds = %392
  br label %398

398:                                              ; preds = %397
  br label %399

399:                                              ; preds = %398
  %400 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %401 = load i32, ptr %400, align 4, !tbaa !15
  %402 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %403 = load i32, ptr %402, align 4, !tbaa !15
  %404 = xor i32 %403, %401
  store i32 %404, ptr %402, align 4, !tbaa !15
  %405 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %406 = load i32, ptr %405, align 4, !tbaa !9
  %407 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %408 = load i32, ptr %407, align 4, !tbaa !9
  %409 = xor i32 %408, %406
  store i32 %409, ptr %407, align 4, !tbaa !9
  %410 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %411 = load i32, ptr %410, align 4, !tbaa !12
  %412 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %413 = load i32, ptr %412, align 4, !tbaa !12
  %414 = xor i32 %413, %411
  store i32 %414, ptr %412, align 4, !tbaa !12
  %415 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %416 = load i32, ptr %415, align 4, !tbaa !13
  %417 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %418 = load i32, ptr %417, align 4, !tbaa !13
  %419 = xor i32 %418, %416
  store i32 %419, ptr %417, align 4, !tbaa !13
  br label %420

420:                                              ; preds = %399
  br label %421

421:                                              ; preds = %420
  br label %422

422:                                              ; preds = %421
  %423 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %424 = load i32, ptr %423, align 4, !tbaa !15
  %425 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %426 = load i32, ptr %425, align 4, !tbaa !15
  %427 = xor i32 %426, %424
  store i32 %427, ptr %425, align 4, !tbaa !15
  %428 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %429 = load i32, ptr %428, align 4, !tbaa !9
  %430 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %431 = load i32, ptr %430, align 4, !tbaa !9
  %432 = xor i32 %431, %429
  store i32 %432, ptr %430, align 4, !tbaa !9
  %433 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %434 = load i32, ptr %433, align 4, !tbaa !12
  %435 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %436 = load i32, ptr %435, align 4, !tbaa !12
  %437 = xor i32 %436, %434
  store i32 %437, ptr %435, align 4, !tbaa !12
  %438 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %439 = load i32, ptr %438, align 4, !tbaa !13
  %440 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %441 = load i32, ptr %440, align 4, !tbaa !13
  %442 = xor i32 %441, %439
  store i32 %442, ptr %440, align 4, !tbaa !13
  br label %443

443:                                              ; preds = %422
  br label %444

444:                                              ; preds = %443
  br label %445

445:                                              ; preds = %444
  %446 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %447 = load i32, ptr %446, align 4, !tbaa !15
  %448 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %449 = load i32, ptr %448, align 4, !tbaa !15
  %450 = and i32 %447, %449
  %451 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %452 = load i32, ptr %451, align 4, !tbaa !15
  %453 = xor i32 %452, %450
  store i32 %453, ptr %451, align 4, !tbaa !15
  br label %454

454:                                              ; preds = %445
  %455 = call i32 @aead_random_generate_32()
  store i32 %455, ptr %12, align 4, !tbaa !16
  %456 = load i32, ptr %12, align 4, !tbaa !16
  %457 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %458 = load i32, ptr %457, align 4, !tbaa !15
  %459 = xor i32 %458, %456
  store i32 %459, ptr %457, align 4, !tbaa !15
  %460 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %461 = load i32, ptr %460, align 4, !tbaa !9
  %462 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %463 = load i32, ptr %462, align 4, !tbaa !15
  %464 = and i32 %461, %463
  %465 = load i32, ptr %12, align 4, !tbaa !16
  %466 = xor i32 %465, %464
  store i32 %466, ptr %12, align 4, !tbaa !16
  %467 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %468 = load i32, ptr %467, align 4, !tbaa !9
  %469 = load i32, ptr %12, align 4, !tbaa !16
  %470 = xor i32 %468, %469
  %471 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %472 = load i32, ptr %471, align 4, !tbaa !9
  %473 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %474 = load i32, ptr %473, align 4, !tbaa !15
  %475 = and i32 %472, %474
  %476 = xor i32 %470, %475
  %477 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  store i32 %476, ptr %477, align 4, !tbaa !9
  br label %478

478:                                              ; preds = %454
  br label %479

479:                                              ; preds = %478
  br label %480

480:                                              ; preds = %479
  %481 = call i32 @aead_random_generate_32()
  store i32 %481, ptr %12, align 4, !tbaa !16
  %482 = load i32, ptr %12, align 4, !tbaa !16
  %483 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %484 = load i32, ptr %483, align 4, !tbaa !15
  %485 = xor i32 %484, %482
  store i32 %485, ptr %483, align 4, !tbaa !15
  %486 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %487 = load i32, ptr %486, align 4, !tbaa !12
  %488 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %489 = load i32, ptr %488, align 4, !tbaa !15
  %490 = and i32 %487, %489
  %491 = load i32, ptr %12, align 4, !tbaa !16
  %492 = xor i32 %491, %490
  store i32 %492, ptr %12, align 4, !tbaa !16
  %493 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %494 = load i32, ptr %493, align 4, !tbaa !12
  %495 = load i32, ptr %12, align 4, !tbaa !16
  %496 = xor i32 %494, %495
  %497 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %498 = load i32, ptr %497, align 4, !tbaa !12
  %499 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %500 = load i32, ptr %499, align 4, !tbaa !15
  %501 = and i32 %498, %500
  %502 = xor i32 %496, %501
  %503 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  store i32 %502, ptr %503, align 4, !tbaa !12
  br label %504

504:                                              ; preds = %480
  br label %505

505:                                              ; preds = %504
  br label %506

506:                                              ; preds = %505
  %507 = call i32 @aead_random_generate_32()
  store i32 %507, ptr %12, align 4, !tbaa !16
  %508 = load i32, ptr %12, align 4, !tbaa !16
  %509 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %510 = load i32, ptr %509, align 4, !tbaa !15
  %511 = xor i32 %510, %508
  store i32 %511, ptr %509, align 4, !tbaa !15
  %512 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %513 = load i32, ptr %512, align 4, !tbaa !13
  %514 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %515 = load i32, ptr %514, align 4, !tbaa !15
  %516 = and i32 %513, %515
  %517 = load i32, ptr %12, align 4, !tbaa !16
  %518 = xor i32 %517, %516
  store i32 %518, ptr %12, align 4, !tbaa !16
  %519 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %520 = load i32, ptr %519, align 4, !tbaa !13
  %521 = load i32, ptr %12, align 4, !tbaa !16
  %522 = xor i32 %520, %521
  %523 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %524 = load i32, ptr %523, align 4, !tbaa !13
  %525 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %526 = load i32, ptr %525, align 4, !tbaa !15
  %527 = and i32 %524, %526
  %528 = xor i32 %522, %527
  %529 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  store i32 %528, ptr %529, align 4, !tbaa !13
  br label %530

530:                                              ; preds = %506
  br label %531

531:                                              ; preds = %530
  %532 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %533 = load i32, ptr %532, align 4, !tbaa !9
  %534 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %535 = load i32, ptr %534, align 4, !tbaa !9
  %536 = and i32 %533, %535
  %537 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %538 = load i32, ptr %537, align 4, !tbaa !9
  %539 = xor i32 %538, %536
  store i32 %539, ptr %537, align 4, !tbaa !9
  br label %540

540:                                              ; preds = %531
  %541 = call i32 @aead_random_generate_32()
  store i32 %541, ptr %12, align 4, !tbaa !16
  %542 = load i32, ptr %12, align 4, !tbaa !16
  %543 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %544 = load i32, ptr %543, align 4, !tbaa !9
  %545 = xor i32 %544, %542
  store i32 %545, ptr %543, align 4, !tbaa !9
  %546 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %547 = load i32, ptr %546, align 4, !tbaa !12
  %548 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %549 = load i32, ptr %548, align 4, !tbaa !9
  %550 = and i32 %547, %549
  %551 = load i32, ptr %12, align 4, !tbaa !16
  %552 = xor i32 %551, %550
  store i32 %552, ptr %12, align 4, !tbaa !16
  %553 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %554 = load i32, ptr %553, align 4, !tbaa !12
  %555 = load i32, ptr %12, align 4, !tbaa !16
  %556 = xor i32 %554, %555
  %557 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %558 = load i32, ptr %557, align 4, !tbaa !12
  %559 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %560 = load i32, ptr %559, align 4, !tbaa !9
  %561 = and i32 %558, %560
  %562 = xor i32 %556, %561
  %563 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  store i32 %562, ptr %563, align 4, !tbaa !12
  br label %564

564:                                              ; preds = %540
  br label %565

565:                                              ; preds = %564
  br label %566

566:                                              ; preds = %565
  %567 = call i32 @aead_random_generate_32()
  store i32 %567, ptr %12, align 4, !tbaa !16
  %568 = load i32, ptr %12, align 4, !tbaa !16
  %569 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %570 = load i32, ptr %569, align 4, !tbaa !9
  %571 = xor i32 %570, %568
  store i32 %571, ptr %569, align 4, !tbaa !9
  %572 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %573 = load i32, ptr %572, align 4, !tbaa !13
  %574 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %575 = load i32, ptr %574, align 4, !tbaa !9
  %576 = and i32 %573, %575
  %577 = load i32, ptr %12, align 4, !tbaa !16
  %578 = xor i32 %577, %576
  store i32 %578, ptr %12, align 4, !tbaa !16
  %579 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %580 = load i32, ptr %579, align 4, !tbaa !13
  %581 = load i32, ptr %12, align 4, !tbaa !16
  %582 = xor i32 %580, %581
  %583 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %584 = load i32, ptr %583, align 4, !tbaa !13
  %585 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %586 = load i32, ptr %585, align 4, !tbaa !9
  %587 = and i32 %584, %586
  %588 = xor i32 %582, %587
  %589 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  store i32 %588, ptr %589, align 4, !tbaa !13
  br label %590

590:                                              ; preds = %566
  br label %591

591:                                              ; preds = %590
  %592 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %593 = load i32, ptr %592, align 4, !tbaa !12
  %594 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %595 = load i32, ptr %594, align 4, !tbaa !12
  %596 = and i32 %593, %595
  %597 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %598 = load i32, ptr %597, align 4, !tbaa !12
  %599 = xor i32 %598, %596
  store i32 %599, ptr %597, align 4, !tbaa !12
  br label %600

600:                                              ; preds = %591
  %601 = call i32 @aead_random_generate_32()
  store i32 %601, ptr %12, align 4, !tbaa !16
  %602 = load i32, ptr %12, align 4, !tbaa !16
  %603 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %604 = load i32, ptr %603, align 4, !tbaa !12
  %605 = xor i32 %604, %602
  store i32 %605, ptr %603, align 4, !tbaa !12
  %606 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %607 = load i32, ptr %606, align 4, !tbaa !13
  %608 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %609 = load i32, ptr %608, align 4, !tbaa !12
  %610 = and i32 %607, %609
  %611 = load i32, ptr %12, align 4, !tbaa !16
  %612 = xor i32 %611, %610
  store i32 %612, ptr %12, align 4, !tbaa !16
  %613 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %614 = load i32, ptr %613, align 4, !tbaa !13
  %615 = load i32, ptr %12, align 4, !tbaa !16
  %616 = xor i32 %614, %615
  %617 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %618 = load i32, ptr %617, align 4, !tbaa !13
  %619 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %620 = load i32, ptr %619, align 4, !tbaa !12
  %621 = and i32 %618, %620
  %622 = xor i32 %616, %621
  %623 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  store i32 %622, ptr %623, align 4, !tbaa !13
  br label %624

624:                                              ; preds = %600
  br label %625

625:                                              ; preds = %624
  %626 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %627 = load i32, ptr %626, align 4, !tbaa !13
  %628 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %629 = load i32, ptr %628, align 4, !tbaa !13
  %630 = and i32 %627, %629
  %631 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %632 = load i32, ptr %631, align 4, !tbaa !13
  %633 = xor i32 %632, %630
  store i32 %633, ptr %631, align 4, !tbaa !13
  br label %634

634:                                              ; preds = %625
  br label %635

635:                                              ; preds = %634
  br label %636

636:                                              ; preds = %635
  %637 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %638 = load i32, ptr %637, align 4, !tbaa !15
  %639 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %640 = load i32, ptr %639, align 4, !tbaa !15
  %641 = and i32 %638, %640
  %642 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %643 = load i32, ptr %642, align 4, !tbaa !15
  %644 = xor i32 %643, %641
  store i32 %644, ptr %642, align 4, !tbaa !15
  br label %645

645:                                              ; preds = %636
  %646 = call i32 @aead_random_generate_32()
  store i32 %646, ptr %12, align 4, !tbaa !16
  %647 = load i32, ptr %12, align 4, !tbaa !16
  %648 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %649 = load i32, ptr %648, align 4, !tbaa !15
  %650 = xor i32 %649, %647
  store i32 %650, ptr %648, align 4, !tbaa !15
  %651 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %652 = load i32, ptr %651, align 4, !tbaa !9
  %653 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %654 = load i32, ptr %653, align 4, !tbaa !15
  %655 = and i32 %652, %654
  %656 = load i32, ptr %12, align 4, !tbaa !16
  %657 = xor i32 %656, %655
  store i32 %657, ptr %12, align 4, !tbaa !16
  %658 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %659 = load i32, ptr %658, align 4, !tbaa !9
  %660 = load i32, ptr %12, align 4, !tbaa !16
  %661 = xor i32 %659, %660
  %662 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %663 = load i32, ptr %662, align 4, !tbaa !9
  %664 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %665 = load i32, ptr %664, align 4, !tbaa !15
  %666 = and i32 %663, %665
  %667 = xor i32 %661, %666
  %668 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  store i32 %667, ptr %668, align 4, !tbaa !9
  br label %669

669:                                              ; preds = %645
  br label %670

670:                                              ; preds = %669
  br label %671

671:                                              ; preds = %670
  %672 = call i32 @aead_random_generate_32()
  store i32 %672, ptr %12, align 4, !tbaa !16
  %673 = load i32, ptr %12, align 4, !tbaa !16
  %674 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %675 = load i32, ptr %674, align 4, !tbaa !15
  %676 = xor i32 %675, %673
  store i32 %676, ptr %674, align 4, !tbaa !15
  %677 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %678 = load i32, ptr %677, align 4, !tbaa !12
  %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 = load i32, ptr %12, align 4, !tbaa !16
  %683 = xor i32 %682, %681
  store i32 %683, ptr %12, align 4, !tbaa !16
  %684 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %685 = load i32, ptr %684, align 4, !tbaa !12
  %686 = load i32, ptr %12, align 4, !tbaa !16
  %687 = xor i32 %685, %686
  %688 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %689 = load i32, ptr %688, align 4, !tbaa !12
  %690 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %691 = load i32, ptr %690, align 4, !tbaa !15
  %692 = and i32 %689, %691
  %693 = xor i32 %687, %692
  %694 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  store i32 %693, ptr %694, align 4, !tbaa !12
  br label %695

695:                                              ; preds = %671
  br label %696

696:                                              ; preds = %695
  br label %697

697:                                              ; preds = %696
  %698 = call i32 @aead_random_generate_32()
  store i32 %698, ptr %12, align 4, !tbaa !16
  %699 = load i32, ptr %12, align 4, !tbaa !16
  %700 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %701 = load i32, ptr %700, align 4, !tbaa !15
  %702 = xor i32 %701, %699
  store i32 %702, ptr %700, align 4, !tbaa !15
  %703 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %704 = load i32, ptr %703, align 4, !tbaa !13
  %705 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %706 = load i32, ptr %705, align 4, !tbaa !15
  %707 = and i32 %704, %706
  %708 = load i32, ptr %12, align 4, !tbaa !16
  %709 = xor i32 %708, %707
  store i32 %709, ptr %12, align 4, !tbaa !16
  %710 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %711 = load i32, ptr %710, align 4, !tbaa !13
  %712 = load i32, ptr %12, align 4, !tbaa !16
  %713 = xor i32 %711, %712
  %714 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %715 = load i32, ptr %714, align 4, !tbaa !13
  %716 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %717 = load i32, ptr %716, align 4, !tbaa !15
  %718 = and i32 %715, %717
  %719 = xor i32 %713, %718
  %720 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  store i32 %719, ptr %720, align 4, !tbaa !13
  br label %721

721:                                              ; preds = %697
  br label %722

722:                                              ; preds = %721
  %723 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %724 = load i32, ptr %723, align 4, !tbaa !9
  %725 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %726 = load i32, ptr %725, align 4, !tbaa !9
  %727 = and i32 %724, %726
  %728 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %729 = load i32, ptr %728, align 4, !tbaa !9
  %730 = xor i32 %729, %727
  store i32 %730, ptr %728, align 4, !tbaa !9
  br label %731

731:                                              ; preds = %722
  %732 = call i32 @aead_random_generate_32()
  store i32 %732, ptr %12, align 4, !tbaa !16
  %733 = load i32, ptr %12, align 4, !tbaa !16
  %734 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %735 = load i32, ptr %734, align 4, !tbaa !9
  %736 = xor i32 %735, %733
  store i32 %736, ptr %734, align 4, !tbaa !9
  %737 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %738 = load i32, ptr %737, align 4, !tbaa !12
  %739 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %740 = load i32, ptr %739, align 4, !tbaa !9
  %741 = and i32 %738, %740
  %742 = load i32, ptr %12, align 4, !tbaa !16
  %743 = xor i32 %742, %741
  store i32 %743, ptr %12, align 4, !tbaa !16
  %744 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %745 = load i32, ptr %744, align 4, !tbaa !12
  %746 = load i32, ptr %12, align 4, !tbaa !16
  %747 = xor i32 %745, %746
  %748 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %749 = load i32, ptr %748, align 4, !tbaa !12
  %750 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %751 = load i32, ptr %750, align 4, !tbaa !9
  %752 = and i32 %749, %751
  %753 = xor i32 %747, %752
  %754 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  store i32 %753, ptr %754, align 4, !tbaa !12
  br label %755

755:                                              ; preds = %731
  br label %756

756:                                              ; preds = %755
  br label %757

757:                                              ; preds = %756
  %758 = call i32 @aead_random_generate_32()
  store i32 %758, ptr %12, align 4, !tbaa !16
  %759 = load i32, ptr %12, align 4, !tbaa !16
  %760 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %761 = load i32, ptr %760, align 4, !tbaa !9
  %762 = xor i32 %761, %759
  store i32 %762, ptr %760, align 4, !tbaa !9
  %763 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %764 = load i32, ptr %763, align 4, !tbaa !13
  %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 = load i32, ptr %12, align 4, !tbaa !16
  %769 = xor i32 %768, %767
  store i32 %769, ptr %12, align 4, !tbaa !16
  %770 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %771 = load i32, ptr %770, align 4, !tbaa !13
  %772 = load i32, ptr %12, align 4, !tbaa !16
  %773 = xor i32 %771, %772
  %774 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %775 = load i32, ptr %774, align 4, !tbaa !13
  %776 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %777 = load i32, ptr %776, align 4, !tbaa !9
  %778 = and i32 %775, %777
  %779 = xor i32 %773, %778
  %780 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  store i32 %779, ptr %780, align 4, !tbaa !13
  br label %781

781:                                              ; preds = %757
  br label %782

782:                                              ; preds = %781
  %783 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %784 = load i32, ptr %783, align 4, !tbaa !12
  %785 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %786 = load i32, ptr %785, align 4, !tbaa !12
  %787 = and i32 %784, %786
  %788 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %789 = load i32, ptr %788, align 4, !tbaa !12
  %790 = xor i32 %789, %787
  store i32 %790, ptr %788, align 4, !tbaa !12
  br label %791

791:                                              ; preds = %782
  %792 = call i32 @aead_random_generate_32()
  store i32 %792, ptr %12, align 4, !tbaa !16
  %793 = load i32, ptr %12, align 4, !tbaa !16
  %794 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %795 = load i32, ptr %794, align 4, !tbaa !12
  %796 = xor i32 %795, %793
  store i32 %796, ptr %794, align 4, !tbaa !12
  %797 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %798 = load i32, ptr %797, align 4, !tbaa !13
  %799 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %800 = load i32, ptr %799, align 4, !tbaa !12
  %801 = and i32 %798, %800
  %802 = load i32, ptr %12, align 4, !tbaa !16
  %803 = xor i32 %802, %801
  store i32 %803, ptr %12, align 4, !tbaa !16
  %804 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %805 = load i32, ptr %804, align 4, !tbaa !13
  %806 = load i32, ptr %12, align 4, !tbaa !16
  %807 = xor i32 %805, %806
  %808 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %809 = load i32, ptr %808, align 4, !tbaa !13
  %810 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %811 = load i32, ptr %810, align 4, !tbaa !12
  %812 = and i32 %809, %811
  %813 = xor i32 %807, %812
  %814 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  store i32 %813, ptr %814, align 4, !tbaa !13
  br label %815

815:                                              ; preds = %791
  br label %816

816:                                              ; preds = %815
  %817 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %818 = load i32, ptr %817, align 4, !tbaa !13
  %819 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %820 = load i32, ptr %819, align 4, !tbaa !13
  %821 = and i32 %818, %820
  %822 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %823 = load i32, ptr %822, align 4, !tbaa !13
  %824 = xor i32 %823, %821
  store i32 %824, ptr %822, align 4, !tbaa !13
  br label %825

825:                                              ; preds = %816
  br label %826

826:                                              ; preds = %825
  br label %827

827:                                              ; preds = %826
  %828 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %829 = load i32, ptr %828, align 4, !tbaa !15
  %830 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %831 = load i32, ptr %830, align 4, !tbaa !15
  %832 = and i32 %829, %831
  %833 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %834 = load i32, ptr %833, align 4, !tbaa !15
  %835 = xor i32 %834, %832
  store i32 %835, ptr %833, align 4, !tbaa !15
  br label %836

836:                                              ; preds = %827
  %837 = call i32 @aead_random_generate_32()
  store i32 %837, ptr %12, align 4, !tbaa !16
  %838 = load i32, ptr %12, align 4, !tbaa !16
  %839 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %840 = load i32, ptr %839, align 4, !tbaa !15
  %841 = xor i32 %840, %838
  store i32 %841, ptr %839, align 4, !tbaa !15
  %842 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %843 = load i32, ptr %842, align 4, !tbaa !9
  %844 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %845 = load i32, ptr %844, align 4, !tbaa !15
  %846 = and i32 %843, %845
  %847 = load i32, ptr %12, align 4, !tbaa !16
  %848 = xor i32 %847, %846
  store i32 %848, ptr %12, align 4, !tbaa !16
  %849 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %850 = load i32, ptr %849, align 4, !tbaa !9
  %851 = load i32, ptr %12, align 4, !tbaa !16
  %852 = xor i32 %850, %851
  %853 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %854 = load i32, ptr %853, align 4, !tbaa !9
  %855 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %856 = load i32, ptr %855, align 4, !tbaa !15
  %857 = and i32 %854, %856
  %858 = xor i32 %852, %857
  %859 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  store i32 %858, ptr %859, align 4, !tbaa !9
  br label %860

860:                                              ; preds = %836
  br label %861

861:                                              ; preds = %860
  br label %862

862:                                              ; preds = %861
  %863 = call i32 @aead_random_generate_32()
  store i32 %863, ptr %12, align 4, !tbaa !16
  %864 = load i32, ptr %12, align 4, !tbaa !16
  %865 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %866 = load i32, ptr %865, align 4, !tbaa !15
  %867 = xor i32 %866, %864
  store i32 %867, ptr %865, align 4, !tbaa !15
  %868 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %869 = load i32, ptr %868, align 4, !tbaa !12
  %870 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %871 = load i32, ptr %870, align 4, !tbaa !15
  %872 = and i32 %869, %871
  %873 = load i32, ptr %12, align 4, !tbaa !16
  %874 = xor i32 %873, %872
  store i32 %874, ptr %12, align 4, !tbaa !16
  %875 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %876 = load i32, ptr %875, align 4, !tbaa !12
  %877 = load i32, ptr %12, align 4, !tbaa !16
  %878 = xor i32 %876, %877
  %879 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %880 = load i32, ptr %879, align 4, !tbaa !12
  %881 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %882 = load i32, ptr %881, align 4, !tbaa !15
  %883 = and i32 %880, %882
  %884 = xor i32 %878, %883
  %885 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  store i32 %884, ptr %885, align 4, !tbaa !12
  br label %886

886:                                              ; preds = %862
  br label %887

887:                                              ; preds = %886
  br label %888

888:                                              ; preds = %887
  %889 = call i32 @aead_random_generate_32()
  store i32 %889, ptr %12, align 4, !tbaa !16
  %890 = load i32, ptr %12, align 4, !tbaa !16
  %891 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %892 = load i32, ptr %891, align 4, !tbaa !15
  %893 = xor i32 %892, %890
  store i32 %893, ptr %891, align 4, !tbaa !15
  %894 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %895 = load i32, ptr %894, align 4, !tbaa !13
  %896 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %897 = load i32, ptr %896, align 4, !tbaa !15
  %898 = and i32 %895, %897
  %899 = load i32, ptr %12, align 4, !tbaa !16
  %900 = xor i32 %899, %898
  store i32 %900, ptr %12, align 4, !tbaa !16
  %901 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %902 = load i32, ptr %901, align 4, !tbaa !13
  %903 = load i32, ptr %12, align 4, !tbaa !16
  %904 = xor i32 %902, %903
  %905 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %906 = load i32, ptr %905, align 4, !tbaa !13
  %907 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %908 = load i32, ptr %907, align 4, !tbaa !15
  %909 = and i32 %906, %908
  %910 = xor i32 %904, %909
  %911 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  store i32 %910, ptr %911, align 4, !tbaa !13
  br label %912

912:                                              ; preds = %888
  br label %913

913:                                              ; preds = %912
  %914 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %915 = load i32, ptr %914, align 4, !tbaa !9
  %916 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %917 = load i32, ptr %916, align 4, !tbaa !9
  %918 = and i32 %915, %917
  %919 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %920 = load i32, ptr %919, align 4, !tbaa !9
  %921 = xor i32 %920, %918
  store i32 %921, ptr %919, align 4, !tbaa !9
  br label %922

922:                                              ; preds = %913
  %923 = call i32 @aead_random_generate_32()
  store i32 %923, ptr %12, align 4, !tbaa !16
  %924 = load i32, ptr %12, align 4, !tbaa !16
  %925 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %926 = load i32, ptr %925, align 4, !tbaa !9
  %927 = xor i32 %926, %924
  store i32 %927, ptr %925, align 4, !tbaa !9
  %928 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %929 = load i32, ptr %928, align 4, !tbaa !12
  %930 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %931 = load i32, ptr %930, align 4, !tbaa !9
  %932 = and i32 %929, %931
  %933 = load i32, ptr %12, align 4, !tbaa !16
  %934 = xor i32 %933, %932
  store i32 %934, ptr %12, align 4, !tbaa !16
  %935 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %936 = load i32, ptr %935, align 4, !tbaa !12
  %937 = load i32, ptr %12, align 4, !tbaa !16
  %938 = xor i32 %936, %937
  %939 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %940 = load i32, ptr %939, align 4, !tbaa !12
  %941 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %942 = load i32, ptr %941, align 4, !tbaa !9
  %943 = and i32 %940, %942
  %944 = xor i32 %938, %943
  %945 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  store i32 %944, ptr %945, align 4, !tbaa !12
  br label %946

946:                                              ; preds = %922
  br label %947

947:                                              ; preds = %946
  br label %948

948:                                              ; preds = %947
  %949 = call i32 @aead_random_generate_32()
  store i32 %949, ptr %12, align 4, !tbaa !16
  %950 = load i32, ptr %12, align 4, !tbaa !16
  %951 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %952 = load i32, ptr %951, align 4, !tbaa !9
  %953 = xor i32 %952, %950
  store i32 %953, ptr %951, align 4, !tbaa !9
  %954 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %955 = load i32, ptr %954, align 4, !tbaa !13
  %956 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %957 = load i32, ptr %956, align 4, !tbaa !9
  %958 = and i32 %955, %957
  %959 = load i32, ptr %12, align 4, !tbaa !16
  %960 = xor i32 %959, %958
  store i32 %960, ptr %12, align 4, !tbaa !16
  %961 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %962 = load i32, ptr %961, align 4, !tbaa !13
  %963 = load i32, ptr %12, align 4, !tbaa !16
  %964 = xor i32 %962, %963
  %965 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %966 = load i32, ptr %965, align 4, !tbaa !13
  %967 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %968 = load i32, ptr %967, align 4, !tbaa !9
  %969 = and i32 %966, %968
  %970 = xor i32 %964, %969
  %971 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  store i32 %970, ptr %971, align 4, !tbaa !13
  br label %972

972:                                              ; preds = %948
  br label %973

973:                                              ; preds = %972
  %974 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %975 = load i32, ptr %974, align 4, !tbaa !12
  %976 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %977 = load i32, ptr %976, align 4, !tbaa !12
  %978 = and i32 %975, %977
  %979 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %980 = load i32, ptr %979, align 4, !tbaa !12
  %981 = xor i32 %980, %978
  store i32 %981, ptr %979, align 4, !tbaa !12
  br label %982

982:                                              ; preds = %973
  %983 = call i32 @aead_random_generate_32()
  store i32 %983, ptr %12, align 4, !tbaa !16
  %984 = load i32, ptr %12, align 4, !tbaa !16
  %985 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %986 = load i32, ptr %985, align 4, !tbaa !12
  %987 = xor i32 %986, %984
  store i32 %987, ptr %985, align 4, !tbaa !12
  %988 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %989 = load i32, ptr %988, align 4, !tbaa !13
  %990 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %991 = load i32, ptr %990, align 4, !tbaa !12
  %992 = and i32 %989, %991
  %993 = load i32, ptr %12, align 4, !tbaa !16
  %994 = xor i32 %993, %992
  store i32 %994, ptr %12, align 4, !tbaa !16
  %995 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %996 = load i32, ptr %995, align 4, !tbaa !13
  %997 = load i32, ptr %12, align 4, !tbaa !16
  %998 = xor i32 %996, %997
  %999 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %1000 = load i32, ptr %999, align 4, !tbaa !13
  %1001 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %1002 = load i32, ptr %1001, align 4, !tbaa !12
  %1003 = and i32 %1000, %1002
  %1004 = xor i32 %998, %1003
  %1005 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  store i32 %1004, ptr %1005, align 4, !tbaa !13
  br label %1006

1006:                                             ; preds = %982
  br label %1007

1007:                                             ; preds = %1006
  %1008 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %1009 = load i32, ptr %1008, align 4, !tbaa !13
  %1010 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %1011 = load i32, ptr %1010, align 4, !tbaa !13
  %1012 = and i32 %1009, %1011
  %1013 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %1014 = load i32, ptr %1013, align 4, !tbaa !13
  %1015 = xor i32 %1014, %1012
  store i32 %1015, ptr %1013, align 4, !tbaa !13
  br label %1016

1016:                                             ; preds = %1007
  br label %1017

1017:                                             ; preds = %1016
  br label %1018

1018:                                             ; preds = %1017
  %1019 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %1020 = load i32, ptr %1019, align 4, !tbaa !15
  %1021 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %1022 = load i32, ptr %1021, align 4, !tbaa !15
  %1023 = and i32 %1020, %1022
  %1024 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %1025 = load i32, ptr %1024, align 4, !tbaa !15
  %1026 = xor i32 %1025, %1023
  store i32 %1026, ptr %1024, align 4, !tbaa !15
  br label %1027

1027:                                             ; preds = %1018
  %1028 = call i32 @aead_random_generate_32()
  store i32 %1028, ptr %12, align 4, !tbaa !16
  %1029 = load i32, ptr %12, align 4, !tbaa !16
  %1030 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %1031 = load i32, ptr %1030, align 4, !tbaa !15
  %1032 = xor i32 %1031, %1029
  store i32 %1032, ptr %1030, align 4, !tbaa !15
  %1033 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %1034 = load i32, ptr %1033, align 4, !tbaa !9
  %1035 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %1036 = load i32, ptr %1035, align 4, !tbaa !15
  %1037 = and i32 %1034, %1036
  %1038 = load i32, ptr %12, align 4, !tbaa !16
  %1039 = xor i32 %1038, %1037
  store i32 %1039, ptr %12, align 4, !tbaa !16
  %1040 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %1041 = load i32, ptr %1040, align 4, !tbaa !9
  %1042 = load i32, ptr %12, align 4, !tbaa !16
  %1043 = xor i32 %1041, %1042
  %1044 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %1045 = load i32, ptr %1044, align 4, !tbaa !9
  %1046 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %1047 = load i32, ptr %1046, align 4, !tbaa !15
  %1048 = and i32 %1045, %1047
  %1049 = xor i32 %1043, %1048
  %1050 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  store i32 %1049, ptr %1050, align 4, !tbaa !9
  br label %1051

1051:                                             ; preds = %1027
  br label %1052

1052:                                             ; preds = %1051
  br label %1053

1053:                                             ; preds = %1052
  %1054 = call i32 @aead_random_generate_32()
  store i32 %1054, ptr %12, align 4, !tbaa !16
  %1055 = load i32, ptr %12, align 4, !tbaa !16
  %1056 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %1057 = load i32, ptr %1056, align 4, !tbaa !15
  %1058 = xor i32 %1057, %1055
  store i32 %1058, ptr %1056, align 4, !tbaa !15
  %1059 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %1060 = load i32, ptr %1059, align 4, !tbaa !12
  %1061 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %1062 = load i32, ptr %1061, align 4, !tbaa !15
  %1063 = and i32 %1060, %1062
  %1064 = load i32, ptr %12, align 4, !tbaa !16
  %1065 = xor i32 %1064, %1063
  store i32 %1065, ptr %12, align 4, !tbaa !16
  %1066 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %1067 = load i32, ptr %1066, align 4, !tbaa !12
  %1068 = load i32, ptr %12, align 4, !tbaa !16
  %1069 = xor i32 %1067, %1068
  %1070 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %1071 = load i32, ptr %1070, align 4, !tbaa !12
  %1072 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %1073 = load i32, ptr %1072, align 4, !tbaa !15
  %1074 = and i32 %1071, %1073
  %1075 = xor i32 %1069, %1074
  %1076 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  store i32 %1075, ptr %1076, align 4, !tbaa !12
  br label %1077

1077:                                             ; preds = %1053
  br label %1078

1078:                                             ; preds = %1077
  br label %1079

1079:                                             ; preds = %1078
  %1080 = call i32 @aead_random_generate_32()
  store i32 %1080, ptr %12, align 4, !tbaa !16
  %1081 = load i32, ptr %12, align 4, !tbaa !16
  %1082 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %1083 = load i32, ptr %1082, align 4, !tbaa !15
  %1084 = xor i32 %1083, %1081
  store i32 %1084, ptr %1082, align 4, !tbaa !15
  %1085 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %1086 = load i32, ptr %1085, align 4, !tbaa !13
  %1087 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %1088 = load i32, ptr %1087, align 4, !tbaa !15
  %1089 = and i32 %1086, %1088
  %1090 = load i32, ptr %12, align 4, !tbaa !16
  %1091 = xor i32 %1090, %1089
  store i32 %1091, ptr %12, align 4, !tbaa !16
  %1092 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %1093 = load i32, ptr %1092, align 4, !tbaa !13
  %1094 = load i32, ptr %12, align 4, !tbaa !16
  %1095 = xor i32 %1093, %1094
  %1096 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %1097 = load i32, ptr %1096, align 4, !tbaa !13
  %1098 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %1099 = load i32, ptr %1098, align 4, !tbaa !15
  %1100 = and i32 %1097, %1099
  %1101 = xor i32 %1095, %1100
  %1102 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  store i32 %1101, ptr %1102, align 4, !tbaa !13
  br label %1103

1103:                                             ; preds = %1079
  br label %1104

1104:                                             ; preds = %1103
  %1105 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %1106 = load i32, ptr %1105, align 4, !tbaa !9
  %1107 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %1108 = load i32, ptr %1107, align 4, !tbaa !9
  %1109 = and i32 %1106, %1108
  %1110 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %1111 = load i32, ptr %1110, align 4, !tbaa !9
  %1112 = xor i32 %1111, %1109
  store i32 %1112, ptr %1110, align 4, !tbaa !9
  br label %1113

1113:                                             ; preds = %1104
  %1114 = call i32 @aead_random_generate_32()
  store i32 %1114, ptr %12, align 4, !tbaa !16
  %1115 = load i32, ptr %12, align 4, !tbaa !16
  %1116 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %1117 = load i32, ptr %1116, align 4, !tbaa !9
  %1118 = xor i32 %1117, %1115
  store i32 %1118, ptr %1116, align 4, !tbaa !9
  %1119 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %1120 = load i32, ptr %1119, align 4, !tbaa !12
  %1121 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %1122 = load i32, ptr %1121, align 4, !tbaa !9
  %1123 = and i32 %1120, %1122
  %1124 = load i32, ptr %12, align 4, !tbaa !16
  %1125 = xor i32 %1124, %1123
  store i32 %1125, ptr %12, align 4, !tbaa !16
  %1126 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %1127 = load i32, ptr %1126, align 4, !tbaa !12
  %1128 = load i32, ptr %12, align 4, !tbaa !16
  %1129 = xor i32 %1127, %1128
  %1130 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %1131 = load i32, ptr %1130, align 4, !tbaa !12
  %1132 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %1133 = load i32, ptr %1132, align 4, !tbaa !9
  %1134 = and i32 %1131, %1133
  %1135 = xor i32 %1129, %1134
  %1136 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  store i32 %1135, ptr %1136, align 4, !tbaa !12
  br label %1137

1137:                                             ; preds = %1113
  br label %1138

1138:                                             ; preds = %1137
  br label %1139

1139:                                             ; preds = %1138
  %1140 = call i32 @aead_random_generate_32()
  store i32 %1140, ptr %12, align 4, !tbaa !16
  %1141 = load i32, ptr %12, align 4, !tbaa !16
  %1142 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %1143 = load i32, ptr %1142, align 4, !tbaa !9
  %1144 = xor i32 %1143, %1141
  store i32 %1144, ptr %1142, align 4, !tbaa !9
  %1145 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %1146 = load i32, ptr %1145, align 4, !tbaa !13
  %1147 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %1148 = load i32, ptr %1147, align 4, !tbaa !9
  %1149 = and i32 %1146, %1148
  %1150 = load i32, ptr %12, align 4, !tbaa !16
  %1151 = xor i32 %1150, %1149
  store i32 %1151, ptr %12, align 4, !tbaa !16
  %1152 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %1153 = load i32, ptr %1152, align 4, !tbaa !13
  %1154 = load i32, ptr %12, align 4, !tbaa !16
  %1155 = xor i32 %1153, %1154
  %1156 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %1157 = load i32, ptr %1156, align 4, !tbaa !13
  %1158 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %1159 = load i32, ptr %1158, align 4, !tbaa !9
  %1160 = and i32 %1157, %1159
  %1161 = xor i32 %1155, %1160
  %1162 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  store i32 %1161, ptr %1162, align 4, !tbaa !13
  br label %1163

1163:                                             ; preds = %1139
  br label %1164

1164:                                             ; preds = %1163
  %1165 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %1166 = load i32, ptr %1165, align 4, !tbaa !12
  %1167 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %1168 = load i32, ptr %1167, align 4, !tbaa !12
  %1169 = and i32 %1166, %1168
  %1170 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %1171 = load i32, ptr %1170, align 4, !tbaa !12
  %1172 = xor i32 %1171, %1169
  store i32 %1172, ptr %1170, align 4, !tbaa !12
  br label %1173

1173:                                             ; preds = %1164
  %1174 = call i32 @aead_random_generate_32()
  store i32 %1174, ptr %12, align 4, !tbaa !16
  %1175 = load i32, ptr %12, align 4, !tbaa !16
  %1176 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %1177 = load i32, ptr %1176, align 4, !tbaa !12
  %1178 = xor i32 %1177, %1175
  store i32 %1178, ptr %1176, align 4, !tbaa !12
  %1179 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %1180 = load i32, ptr %1179, align 4, !tbaa !13
  %1181 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %1182 = load i32, ptr %1181, align 4, !tbaa !12
  %1183 = and i32 %1180, %1182
  %1184 = load i32, ptr %12, align 4, !tbaa !16
  %1185 = xor i32 %1184, %1183
  store i32 %1185, ptr %12, align 4, !tbaa !16
  %1186 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %1187 = load i32, ptr %1186, align 4, !tbaa !13
  %1188 = load i32, ptr %12, align 4, !tbaa !16
  %1189 = xor i32 %1187, %1188
  %1190 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %1191 = load i32, ptr %1190, align 4, !tbaa !13
  %1192 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %1193 = load i32, ptr %1192, align 4, !tbaa !12
  %1194 = and i32 %1191, %1193
  %1195 = xor i32 %1189, %1194
  %1196 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  store i32 %1195, ptr %1196, align 4, !tbaa !13
  br label %1197

1197:                                             ; preds = %1173
  br label %1198

1198:                                             ; preds = %1197
  %1199 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %1200 = load i32, ptr %1199, align 4, !tbaa !13
  %1201 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %1202 = load i32, ptr %1201, align 4, !tbaa !13
  %1203 = and i32 %1200, %1202
  %1204 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %1205 = load i32, ptr %1204, align 4, !tbaa !13
  %1206 = xor i32 %1205, %1203
  store i32 %1206, ptr %1204, align 4, !tbaa !13
  br label %1207

1207:                                             ; preds = %1198
  br label %1208

1208:                                             ; preds = %1207
  br label %1209

1209:                                             ; preds = %1208
  %1210 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %1211 = load i32, ptr %1210, align 4, !tbaa !15
  %1212 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %1213 = load i32, ptr %1212, align 4, !tbaa !15
  %1214 = xor i32 %1213, %1211
  store i32 %1214, ptr %1212, align 4, !tbaa !15
  %1215 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %1216 = load i32, ptr %1215, align 4, !tbaa !9
  %1217 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %1218 = load i32, ptr %1217, align 4, !tbaa !9
  %1219 = xor i32 %1218, %1216
  store i32 %1219, ptr %1217, align 4, !tbaa !9
  %1220 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %1221 = load i32, ptr %1220, align 4, !tbaa !12
  %1222 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %1223 = load i32, ptr %1222, align 4, !tbaa !12
  %1224 = xor i32 %1223, %1221
  store i32 %1224, ptr %1222, align 4, !tbaa !12
  %1225 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %1226 = load i32, ptr %1225, align 4, !tbaa !13
  %1227 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %1228 = load i32, ptr %1227, align 4, !tbaa !13
  %1229 = xor i32 %1228, %1226
  store i32 %1229, ptr %1227, align 4, !tbaa !13
  br label %1230

1230:                                             ; preds = %1209
  br label %1231

1231:                                             ; preds = %1230
  br label %1232

1232:                                             ; preds = %1231
  %1233 = load ptr, ptr %7, align 8, !tbaa !5
  %1234 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1233, i64 0
  %1235 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1234, i32 0, i32 0
  %1236 = load i32, ptr %1235, align 4, !tbaa !15
  %1237 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %1238 = load i32, ptr %1237, align 4, !tbaa !15
  %1239 = xor i32 %1238, %1236
  store i32 %1239, ptr %1237, align 4, !tbaa !15
  %1240 = load ptr, ptr %7, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1240, i64 0
  %1242 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1241, i32 0, i32 1
  %1243 = load i32, ptr %1242, align 4, !tbaa !9
  %1244 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %1245 = load i32, ptr %1244, align 4, !tbaa !9
  %1246 = xor i32 %1245, %1243
  store i32 %1246, ptr %1244, align 4, !tbaa !9
  %1247 = load ptr, ptr %7, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1247, i64 0
  %1249 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1248, i32 0, i32 2
  %1250 = load i32, ptr %1249, align 4, !tbaa !12
  %1251 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %1252 = load i32, ptr %1251, align 4, !tbaa !12
  %1253 = xor i32 %1252, %1250
  store i32 %1253, ptr %1251, align 4, !tbaa !12
  %1254 = load ptr, ptr %7, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1254, i64 0
  %1256 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1255, i32 0, i32 3
  %1257 = load i32, ptr %1256, align 4, !tbaa !13
  %1258 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %1259 = load i32, ptr %1258, align 4, !tbaa !13
  %1260 = xor i32 %1259, %1257
  store i32 %1260, ptr %1258, align 4, !tbaa !13
  br label %1261

1261:                                             ; preds = %1232
  br label %1262

1262:                                             ; preds = %1261
  br label %1263

1263:                                             ; preds = %1262
  %1264 = load ptr, ptr %7, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1264, i64 1
  %1266 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1265, i32 0, i32 0
  %1267 = load i32, ptr %1266, align 4, !tbaa !15
  %1268 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %1269 = load i32, ptr %1268, align 4, !tbaa !15
  %1270 = xor i32 %1269, %1267
  store i32 %1270, ptr %1268, align 4, !tbaa !15
  %1271 = load ptr, ptr %7, align 8, !tbaa !5
  %1272 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1271, i64 1
  %1273 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1272, i32 0, i32 1
  %1274 = load i32, ptr %1273, align 4, !tbaa !9
  %1275 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %1276 = load i32, ptr %1275, align 4, !tbaa !9
  %1277 = xor i32 %1276, %1274
  store i32 %1277, ptr %1275, align 4, !tbaa !9
  %1278 = load ptr, ptr %7, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1278, i64 1
  %1280 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1279, i32 0, i32 2
  %1281 = load i32, ptr %1280, align 4, !tbaa !12
  %1282 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %1283 = load i32, ptr %1282, align 4, !tbaa !12
  %1284 = xor i32 %1283, %1281
  store i32 %1284, ptr %1282, align 4, !tbaa !12
  %1285 = load ptr, ptr %7, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1285, i64 1
  %1287 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1286, i32 0, i32 3
  %1288 = load i32, ptr %1287, align 4, !tbaa !13
  %1289 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %1290 = load i32, ptr %1289, align 4, !tbaa !13
  %1291 = xor i32 %1290, %1288
  store i32 %1291, ptr %1289, align 4, !tbaa !13
  br label %1292

1292:                                             ; preds = %1263
  br label %1293

1293:                                             ; preds = %1292
  br label %1294

1294:                                             ; preds = %1293
  %1295 = load ptr, ptr %7, align 8, !tbaa !5
  %1296 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1295, i64 2
  %1297 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1296, i32 0, i32 0
  %1298 = load i32, ptr %1297, align 4, !tbaa !15
  %1299 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %1300 = load i32, ptr %1299, align 4, !tbaa !15
  %1301 = xor i32 %1300, %1298
  store i32 %1301, ptr %1299, align 4, !tbaa !15
  %1302 = load ptr, ptr %7, align 8, !tbaa !5
  %1303 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1302, i64 2
  %1304 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1303, i32 0, i32 1
  %1305 = load i32, ptr %1304, align 4, !tbaa !9
  %1306 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %1307 = load i32, ptr %1306, align 4, !tbaa !9
  %1308 = xor i32 %1307, %1305
  store i32 %1308, ptr %1306, align 4, !tbaa !9
  %1309 = load ptr, ptr %7, align 8, !tbaa !5
  %1310 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1309, i64 2
  %1311 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1310, i32 0, i32 2
  %1312 = load i32, ptr %1311, align 4, !tbaa !12
  %1313 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %1314 = load i32, ptr %1313, align 4, !tbaa !12
  %1315 = xor i32 %1314, %1312
  store i32 %1315, ptr %1313, align 4, !tbaa !12
  %1316 = load ptr, ptr %7, align 8, !tbaa !5
  %1317 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1316, i64 2
  %1318 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1317, i32 0, i32 3
  %1319 = load i32, ptr %1318, align 4, !tbaa !13
  %1320 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %1321 = load i32, ptr %1320, align 4, !tbaa !13
  %1322 = xor i32 %1321, %1319
  store i32 %1322, ptr %1320, align 4, !tbaa !13
  br label %1323

1323:                                             ; preds = %1294
  br label %1324

1324:                                             ; preds = %1323
  br label %1325

1325:                                             ; preds = %1324
  %1326 = load ptr, ptr %7, align 8, !tbaa !5
  %1327 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1326, i64 3
  %1328 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1327, i32 0, i32 0
  %1329 = load i32, ptr %1328, align 4, !tbaa !15
  %1330 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %1331 = load i32, ptr %1330, align 4, !tbaa !15
  %1332 = xor i32 %1331, %1329
  store i32 %1332, ptr %1330, align 4, !tbaa !15
  %1333 = load ptr, ptr %7, align 8, !tbaa !5
  %1334 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1333, i64 3
  %1335 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1334, i32 0, i32 1
  %1336 = load i32, ptr %1335, align 4, !tbaa !9
  %1337 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %1338 = load i32, ptr %1337, align 4, !tbaa !9
  %1339 = xor i32 %1338, %1336
  store i32 %1339, ptr %1337, align 4, !tbaa !9
  %1340 = load ptr, ptr %7, align 8, !tbaa !5
  %1341 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1340, i64 3
  %1342 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1341, i32 0, i32 2
  %1343 = load i32, ptr %1342, align 4, !tbaa !12
  %1344 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %1345 = load i32, ptr %1344, align 4, !tbaa !12
  %1346 = xor i32 %1345, %1343
  store i32 %1346, ptr %1344, align 4, !tbaa !12
  %1347 = load ptr, ptr %7, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1347, i64 3
  %1349 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1348, i32 0, i32 3
  %1350 = load i32, ptr %1349, align 4, !tbaa !13
  %1351 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %1352 = load i32, ptr %1351, align 4, !tbaa !13
  %1353 = xor i32 %1352, %1350
  store i32 %1353, ptr %1351, align 4, !tbaa !13
  br label %1354

1354:                                             ; preds = %1325
  br label %1355

1355:                                             ; preds = %1354
  br label %1356

1356:                                             ; preds = %1355
  %1357 = load i8, ptr %13, align 1, !tbaa !14
  %1358 = add i8 %1357, 1
  store i8 %1358, ptr %13, align 1, !tbaa !14
  %1359 = load ptr, ptr %7, align 8, !tbaa !5
  %1360 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %1359, i64 -4
  store ptr %1360, ptr %7, align 8, !tbaa !5
  br label %324, !llvm.loop !17

1361:                                             ; preds = %324
  br label %1362

1362:                                             ; preds = %1361
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  %1363 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 0
  %1364 = load i32, ptr %1363, align 4, !tbaa !15
  %1365 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 1
  %1366 = load i32, ptr %1365, align 4, !tbaa !9
  %1367 = xor i32 %1364, %1366
  %1368 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 2
  %1369 = load i32, ptr %1368, align 4, !tbaa !12
  %1370 = xor i32 %1367, %1369
  %1371 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %8, i32 0, i32 3
  %1372 = load i32, ptr %1371, align 4, !tbaa !13
  %1373 = xor i32 %1370, %1372
  store i32 %1373, ptr %14, align 4, !tbaa !16
  %1374 = load i32, ptr %14, align 4, !tbaa !16
  %1375 = lshr i32 %1374, 24
  %1376 = trunc i32 %1375 to i8
  %1377 = load ptr, ptr %5, align 8, !tbaa !5
  %1378 = getelementptr inbounds i8, ptr %1377, i64 0
  store i8 %1376, ptr %1378, align 1, !tbaa !14
  %1379 = load i32, ptr %14, align 4, !tbaa !16
  %1380 = lshr i32 %1379, 16
  %1381 = trunc i32 %1380 to i8
  %1382 = load ptr, ptr %5, align 8, !tbaa !5
  %1383 = getelementptr inbounds i8, ptr %1382, i64 1
  store i8 %1381, ptr %1383, align 1, !tbaa !14
  %1384 = load i32, ptr %14, align 4, !tbaa !16
  %1385 = lshr i32 %1384, 8
  %1386 = trunc i32 %1385 to i8
  %1387 = load ptr, ptr %5, align 8, !tbaa !5
  %1388 = getelementptr inbounds i8, ptr %1387, i64 2
  store i8 %1386, ptr %1388, align 1, !tbaa !14
  %1389 = load i32, ptr %14, align 4, !tbaa !16
  %1390 = trunc i32 %1389 to i8
  %1391 = load ptr, ptr %5, align 8, !tbaa !5
  %1392 = getelementptr inbounds i8, ptr %1391, i64 3
  store i8 %1390, ptr %1392, align 1, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  br label %1393

1393:                                             ; preds = %1362
  br label %1394

1394:                                             ; preds = %1393
  br label %1395

1395:                                             ; preds = %1394
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  %1396 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 0
  %1397 = load i32, ptr %1396, align 4, !tbaa !15
  %1398 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 1
  %1399 = load i32, ptr %1398, align 4, !tbaa !9
  %1400 = xor i32 %1397, %1399
  %1401 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 2
  %1402 = load i32, ptr %1401, align 4, !tbaa !12
  %1403 = xor i32 %1400, %1402
  %1404 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %9, i32 0, i32 3
  %1405 = load i32, ptr %1404, align 4, !tbaa !13
  %1406 = xor i32 %1403, %1405
  store i32 %1406, ptr %15, align 4, !tbaa !16
  %1407 = load i32, ptr %15, align 4, !tbaa !16
  %1408 = lshr i32 %1407, 24
  %1409 = trunc i32 %1408 to i8
  %1410 = load ptr, ptr %5, align 8, !tbaa !5
  %1411 = getelementptr inbounds i8, ptr %1410, i64 4
  %1412 = getelementptr inbounds i8, ptr %1411, i64 0
  store i8 %1409, ptr %1412, align 1, !tbaa !14
  %1413 = load i32, ptr %15, align 4, !tbaa !16
  %1414 = lshr i32 %1413, 16
  %1415 = trunc i32 %1414 to i8
  %1416 = load ptr, ptr %5, align 8, !tbaa !5
  %1417 = getelementptr inbounds i8, ptr %1416, i64 4
  %1418 = getelementptr inbounds i8, ptr %1417, i64 1
  store i8 %1415, ptr %1418, align 1, !tbaa !14
  %1419 = load i32, ptr %15, align 4, !tbaa !16
  %1420 = lshr i32 %1419, 8
  %1421 = trunc i32 %1420 to i8
  %1422 = load ptr, ptr %5, align 8, !tbaa !5
  %1423 = getelementptr inbounds i8, ptr %1422, i64 4
  %1424 = getelementptr inbounds i8, ptr %1423, i64 2
  store i8 %1421, ptr %1424, align 1, !tbaa !14
  %1425 = load i32, ptr %15, align 4, !tbaa !16
  %1426 = trunc i32 %1425 to i8
  %1427 = load ptr, ptr %5, align 8, !tbaa !5
  %1428 = getelementptr inbounds i8, ptr %1427, i64 4
  %1429 = getelementptr inbounds i8, ptr %1428, i64 3
  store i8 %1426, ptr %1429, align 1, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  br label %1430

1430:                                             ; preds = %1395
  br label %1431

1431:                                             ; preds = %1430
  br label %1432

1432:                                             ; preds = %1431
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  %1433 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 0
  %1434 = load i32, ptr %1433, align 4, !tbaa !15
  %1435 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 1
  %1436 = load i32, ptr %1435, align 4, !tbaa !9
  %1437 = xor i32 %1434, %1436
  %1438 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 2
  %1439 = load i32, ptr %1438, align 4, !tbaa !12
  %1440 = xor i32 %1437, %1439
  %1441 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %10, i32 0, i32 3
  %1442 = load i32, ptr %1441, align 4, !tbaa !13
  %1443 = xor i32 %1440, %1442
  store i32 %1443, ptr %16, align 4, !tbaa !16
  %1444 = load i32, ptr %16, align 4, !tbaa !16
  %1445 = lshr i32 %1444, 24
  %1446 = trunc i32 %1445 to i8
  %1447 = load ptr, ptr %5, align 8, !tbaa !5
  %1448 = getelementptr inbounds i8, ptr %1447, i64 8
  %1449 = getelementptr inbounds i8, ptr %1448, i64 0
  store i8 %1446, ptr %1449, align 1, !tbaa !14
  %1450 = load i32, ptr %16, align 4, !tbaa !16
  %1451 = lshr i32 %1450, 16
  %1452 = trunc i32 %1451 to i8
  %1453 = load ptr, ptr %5, align 8, !tbaa !5
  %1454 = getelementptr inbounds i8, ptr %1453, i64 8
  %1455 = getelementptr inbounds i8, ptr %1454, i64 1
  store i8 %1452, ptr %1455, align 1, !tbaa !14
  %1456 = load i32, ptr %16, align 4, !tbaa !16
  %1457 = lshr i32 %1456, 8
  %1458 = trunc i32 %1457 to i8
  %1459 = load ptr, ptr %5, align 8, !tbaa !5
  %1460 = getelementptr inbounds i8, ptr %1459, i64 8
  %1461 = getelementptr inbounds i8, ptr %1460, i64 2
  store i8 %1458, ptr %1461, align 1, !tbaa !14
  %1462 = load i32, ptr %16, align 4, !tbaa !16
  %1463 = trunc i32 %1462 to i8
  %1464 = load ptr, ptr %5, align 8, !tbaa !5
  %1465 = getelementptr inbounds i8, ptr %1464, i64 8
  %1466 = getelementptr inbounds i8, ptr %1465, i64 3
  store i8 %1463, ptr %1466, align 1, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  br label %1467

1467:                                             ; preds = %1432
  br label %1468

1468:                                             ; preds = %1467
  br label %1469

1469:                                             ; preds = %1468
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  %1470 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 0
  %1471 = load i32, ptr %1470, align 4, !tbaa !15
  %1472 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 1
  %1473 = load i32, ptr %1472, align 4, !tbaa !9
  %1474 = xor i32 %1471, %1473
  %1475 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 2
  %1476 = load i32, ptr %1475, align 4, !tbaa !12
  %1477 = xor i32 %1474, %1476
  %1478 = getelementptr inbounds %struct.mask_x4_uint32_t, ptr %11, i32 0, i32 3
  %1479 = load i32, ptr %1478, align 4, !tbaa !13
  %1480 = xor i32 %1477, %1479
  store i32 %1480, ptr %17, align 4, !tbaa !16
  %1481 = load i32, ptr %17, align 4, !tbaa !16
  %1482 = lshr i32 %1481, 24
  %1483 = trunc i32 %1482 to i8
  %1484 = load ptr, ptr %5, align 8, !tbaa !5
  %1485 = getelementptr inbounds i8, ptr %1484, i64 12
  %1486 = getelementptr inbounds i8, ptr %1485, i64 0
  store i8 %1483, ptr %1486, align 1, !tbaa !14
  %1487 = load i32, ptr %17, align 4, !tbaa !16
  %1488 = lshr i32 %1487, 16
  %1489 = trunc i32 %1488 to i8
  %1490 = load ptr, ptr %5, align 8, !tbaa !5
  %1491 = getelementptr inbounds i8, ptr %1490, i64 12
  %1492 = getelementptr inbounds i8, ptr %1491, i64 1
  store i8 %1489, ptr %1492, align 1, !tbaa !14
  %1493 = load i32, ptr %17, align 4, !tbaa !16
  %1494 = lshr i32 %1493, 8
  %1495 = trunc i32 %1494 to i8
  %1496 = load ptr, ptr %5, align 8, !tbaa !5
  %1497 = getelementptr inbounds i8, ptr %1496, i64 12
  %1498 = getelementptr inbounds i8, ptr %1497, i64 2
  store i8 %1495, ptr %1498, align 1, !tbaa !14
  %1499 = load i32, ptr %17, align 4, !tbaa !16
  %1500 = trunc i32 %1499 to i8
  %1501 = load ptr, ptr %5, align 8, !tbaa !5
  %1502 = getelementptr inbounds i8, ptr %1501, i64 12
  %1503 = getelementptr inbounds i8, ptr %1502, i64 3
  store i8 %1500, ptr %1503, align 1, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  br label %1504

1504:                                             ; preds = %1469
  br label %1505

1505:                                             ; preds = %1504
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 16, 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
}

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

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

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

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

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
define dso_local void @pyjamask_masked_128_decrypt(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 16
  %6 = alloca %struct.mask_x4_uint32_t, align 16
  %7 = alloca %struct.mask_x4_uint32_t, align 4
  %8 = getelementptr inbounds i8, ptr %0, i64 896
  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
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #3
  %9 = tail call i32 @aead_random_generate_32() #3
  %10 = getelementptr inbounds i8, ptr %4, i64 4
  store i32 %9, ptr %10, align 4, !tbaa !5
  %11 = tail call i32 @aead_random_generate_32() #3
  %12 = getelementptr inbounds i8, ptr %4, i64 8
  store i32 %11, ptr %12, align 4, !tbaa !10
  %13 = tail call i32 @aead_random_generate_32() #3
  %14 = getelementptr inbounds i8, ptr %4, i64 12
  store i32 %13, ptr %14, align 4, !tbaa !11
  %15 = load i8, ptr %2, align 1, !tbaa !12
  %16 = zext i8 %15 to i32
  %17 = shl nuw i32 %16, 24
  %18 = getelementptr inbounds i8, ptr %2, i64 1
  %19 = load i8, ptr %18, align 1, !tbaa !12
  %20 = zext i8 %19 to i32
  %21 = shl nuw nsw i32 %20, 16
  %22 = or disjoint i32 %21, %17
  %23 = getelementptr inbounds i8, ptr %2, i64 2
  %24 = load i8, ptr %23, align 1, !tbaa !12
  %25 = zext i8 %24 to i32
  %26 = shl nuw nsw i32 %25, 8
  %27 = or disjoint i32 %22, %26
  %28 = getelementptr inbounds i8, ptr %2, i64 3
  %29 = load i8, ptr %28, align 1, !tbaa !12
  %30 = zext i8 %29 to i32
  %31 = or disjoint i32 %27, %30
  %32 = tail call i32 @aead_random_generate_32() #3
  %33 = getelementptr inbounds i8, ptr %5, i64 4
  store i32 %32, ptr %33, align 4, !tbaa !5
  %34 = tail call i32 @aead_random_generate_32() #3
  %35 = getelementptr inbounds i8, ptr %5, i64 8
  store i32 %34, ptr %35, align 8, !tbaa !10
  %36 = tail call i32 @aead_random_generate_32() #3
  %37 = getelementptr inbounds i8, ptr %5, i64 12
  store i32 %36, ptr %37, align 4, !tbaa !11
  %38 = getelementptr inbounds i8, ptr %2, i64 4
  %39 = load i8, ptr %38, align 1, !tbaa !12
  %40 = zext i8 %39 to i32
  %41 = shl nuw i32 %40, 24
  %42 = getelementptr inbounds i8, ptr %2, i64 5
  %43 = load i8, ptr %42, align 1, !tbaa !12
  %44 = zext i8 %43 to i32
  %45 = shl nuw nsw i32 %44, 16
  %46 = or disjoint i32 %45, %41
  %47 = getelementptr inbounds i8, ptr %2, i64 6
  %48 = load i8, ptr %47, align 1, !tbaa !12
  %49 = zext i8 %48 to i32
  %50 = shl nuw nsw i32 %49, 8
  %51 = or disjoint i32 %46, %50
  %52 = getelementptr inbounds i8, ptr %2, i64 7
  %53 = load i8, ptr %52, align 1, !tbaa !12
  %54 = zext i8 %53 to i32
  %55 = or disjoint i32 %51, %54
  %56 = tail call i32 @aead_random_generate_32() #3
  %57 = getelementptr inbounds i8, ptr %6, i64 4
  store i32 %56, ptr %57, align 4, !tbaa !5
  %58 = tail call i32 @aead_random_generate_32() #3
  %59 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 %58, ptr %59, align 8, !tbaa !10
  %60 = tail call i32 @aead_random_generate_32() #3
  %61 = getelementptr inbounds i8, ptr %6, i64 12
  store i32 %60, ptr %61, align 4, !tbaa !11
  %62 = getelementptr inbounds i8, ptr %2, i64 8
  %63 = load i8, ptr %62, align 1, !tbaa !12
  %64 = zext i8 %63 to i32
  %65 = shl nuw i32 %64, 24
  %66 = getelementptr inbounds i8, ptr %2, i64 9
  %67 = load i8, ptr %66, align 1, !tbaa !12
  %68 = zext i8 %67 to i32
  %69 = shl nuw nsw i32 %68, 16
  %70 = or disjoint i32 %69, %65
  %71 = getelementptr inbounds i8, ptr %2, i64 10
  %72 = load i8, ptr %71, align 1, !tbaa !12
  %73 = zext i8 %72 to i32
  %74 = shl nuw nsw i32 %73, 8
  %75 = or disjoint i32 %70, %74
  %76 = getelementptr inbounds i8, ptr %2, i64 11
  %77 = load i8, ptr %76, align 1, !tbaa !12
  %78 = zext i8 %77 to i32
  %79 = or disjoint i32 %75, %78
  %80 = tail call i32 @aead_random_generate_32() #3
  %81 = getelementptr inbounds i8, ptr %7, i64 4
  %82 = tail call i32 @aead_random_generate_32() #3
  %83 = getelementptr inbounds i8, ptr %7, i64 8
  %84 = tail call i32 @aead_random_generate_32() #3
  %85 = getelementptr inbounds i8, ptr %7, i64 12
  %86 = getelementptr inbounds i8, ptr %2, i64 12
  %87 = load i8, ptr %86, align 1, !tbaa !12
  %88 = zext i8 %87 to i32
  %89 = shl nuw i32 %88, 24
  %90 = getelementptr inbounds i8, ptr %2, i64 13
  %91 = load i8, ptr %90, align 1, !tbaa !12
  %92 = zext i8 %91 to i32
  %93 = shl nuw nsw i32 %92, 16
  %94 = or disjoint i32 %93, %89
  %95 = getelementptr inbounds i8, ptr %2, i64 14
  %96 = load i8, ptr %95, align 1, !tbaa !12
  %97 = zext i8 %96 to i32
  %98 = shl nuw nsw i32 %97, 8
  %99 = or disjoint i32 %94, %98
  %100 = getelementptr inbounds i8, ptr %2, i64 15
  %101 = load i8, ptr %100, align 1, !tbaa !12
  %102 = zext i8 %101 to i32
  %103 = or disjoint i32 %99, %102
  %104 = load i32, ptr %8, align 4, !tbaa !13
  %105 = xor i32 %31, %104
  %106 = xor i32 %105, %11
  %107 = xor i32 %106, %9
  %108 = xor i32 %107, %13
  store i32 %108, ptr %4, align 4, !tbaa !13
  %109 = getelementptr inbounds i8, ptr %0, i64 900
  %110 = load <2 x i32>, ptr %109, align 4, !tbaa !14
  %111 = load <2 x i32>, ptr %10, align 4, !tbaa !14
  %112 = xor <2 x i32> %111, %110
  store <2 x i32> %112, ptr %10, align 4, !tbaa !14
  %113 = getelementptr inbounds i8, ptr %0, i64 908
  %114 = load i32, ptr %113, align 4, !tbaa !11
  %115 = load i32, ptr %14, align 4, !tbaa !11
  %116 = xor i32 %115, %114
  store i32 %116, ptr %14, align 4, !tbaa !11
  %117 = getelementptr inbounds i8, ptr %0, i64 912
  %118 = load i32, ptr %117, align 4, !tbaa !13
  %119 = xor i32 %55, %118
  %120 = xor i32 %119, %34
  %121 = xor i32 %120, %32
  %122 = xor i32 %121, %36
  store i32 %122, ptr %5, align 16, !tbaa !13
  %123 = getelementptr inbounds i8, ptr %0, i64 916
  %124 = load <2 x i32>, ptr %123, align 4, !tbaa !14
  %125 = load <2 x i32>, ptr %33, align 4, !tbaa !14
  %126 = xor <2 x i32> %125, %124
  store <2 x i32> %126, ptr %33, align 4, !tbaa !14
  %127 = getelementptr inbounds i8, ptr %0, i64 924
  %128 = load i32, ptr %127, align 4, !tbaa !11
  %129 = load i32, ptr %37, align 4, !tbaa !11
  %130 = xor i32 %129, %128
  store i32 %130, ptr %37, align 4, !tbaa !11
  %131 = getelementptr inbounds i8, ptr %0, i64 928
  %132 = load i32, ptr %131, align 4, !tbaa !13
  %133 = xor i32 %79, %132
  %134 = xor i32 %133, %58
  %135 = xor i32 %134, %56
  %136 = xor i32 %135, %60
  store i32 %136, ptr %6, align 16, !tbaa !13
  %137 = getelementptr inbounds i8, ptr %0, i64 932
  %138 = load <2 x i32>, ptr %137, align 4, !tbaa !14
  %139 = load <2 x i32>, ptr %57, align 4, !tbaa !14
  %140 = xor <2 x i32> %139, %138
  store <2 x i32> %140, ptr %57, align 4, !tbaa !14
  %141 = getelementptr inbounds i8, ptr %0, i64 940
  %142 = load i32, ptr %141, align 4, !tbaa !11
  %143 = load i32, ptr %61, align 4, !tbaa !11
  %144 = xor i32 %143, %142
  store i32 %144, ptr %61, align 4, !tbaa !11
  %145 = getelementptr inbounds i8, ptr %0, i64 944
  %146 = load i32, ptr %145, align 4, !tbaa !13
  %147 = xor i32 %103, %146
  %148 = xor i32 %147, %84
  %149 = xor i32 %148, %80
  %150 = xor i32 %149, %82
  store i32 %150, ptr %7, align 4, !tbaa !13
  %151 = getelementptr inbounds i8, ptr %0, i64 948
  %152 = load i32, ptr %151, align 4, !tbaa !5
  %153 = xor i32 %152, %80
  store i32 %153, ptr %81, align 4, !tbaa !5
  %154 = getelementptr inbounds i8, ptr %0, i64 952
  %155 = load i32, ptr %154, align 4, !tbaa !10
  %156 = xor i32 %155, %82
  store i32 %156, ptr %83, align 4, !tbaa !10
  %157 = getelementptr inbounds i8, ptr %0, i64 956
  %158 = load i32, ptr %157, align 4, !tbaa !11
  %159 = xor i32 %158, %84
  store i32 %159, ptr %85, align 4, !tbaa !11
  %160 = getelementptr inbounds i8, ptr %0, i64 832
  br label %161

161:                                              ; preds = %3, %161
  %.0158 = phi ptr [ %160, %3 ], [ %598, %161 ]
  %.0156157 = phi i8 [ 0, %3 ], [ %597, %161 ]
  call void @pyjamask_matrix_multiply_masked_2037a121(ptr noundef nonnull %4)
  call void @pyjamask_matrix_multiply_masked_108ff2a0(ptr noundef nonnull %5)
  call void @pyjamask_matrix_multiply_masked_9054d8c0(ptr noundef nonnull %6)
  call void @pyjamask_matrix_multiply_masked_3354b117(ptr noundef nonnull %7)
  %162 = load i32, ptr %7, align 4, !tbaa !13
  %163 = load i32, ptr %6, align 16, !tbaa !13
  %164 = load <2 x i32>, ptr %57, align 4, !tbaa !14
  %165 = load i32, ptr %85, align 4, !tbaa !11
  %166 = load i32, ptr %61, align 4, !tbaa !11
  store i32 %166, ptr %85, align 4, !tbaa !11
  %167 = xor i32 %163, -1
  store i32 %167, ptr %7, align 4, !tbaa !13
  %168 = load i32, ptr %4, align 4, !tbaa !13
  %169 = load i32, ptr %5, align 16, !tbaa !13
  %170 = xor i32 %169, %168
  store i32 %170, ptr %5, align 16, !tbaa !13
  %171 = load <2 x i32>, ptr %10, align 4, !tbaa !14
  %172 = load <2 x i32>, ptr %33, align 4, !tbaa !14
  %173 = xor <2 x i32> %172, %171
  store <2 x i32> %173, ptr %33, align 4, !tbaa !14
  %174 = load i32, ptr %14, align 4, !tbaa !11
  %175 = load i32, ptr %37, align 4, !tbaa !11
  %176 = xor i32 %175, %174
  store i32 %176, ptr %37, align 4, !tbaa !11
  %177 = load <2 x i32>, ptr %81, align 4, !tbaa !14
  store <2 x i32> %164, ptr %81, align 4, !tbaa !14
  %178 = xor <2 x i32> %173, %177
  store <2 x i32> %178, ptr %57, align 4, !tbaa !14
  %179 = xor i32 %176, %165
  store i32 %179, ptr %61, align 4, !tbaa !11
  %180 = and i32 %168, %167
  %181 = xor i32 %162, %180
  %182 = xor i32 %181, %170
  store i32 %182, ptr %6, align 16, !tbaa !13
  %183 = call i32 @aead_random_generate_32() #3
  %184 = load i32, ptr %6, align 16, !tbaa !13
  %185 = xor i32 %184, %183
  store i32 %185, ptr %6, align 16, !tbaa !13
  %186 = load i32, ptr %81, align 4, !tbaa !5
  %187 = load i32, ptr %4, align 4, !tbaa !13
  %188 = and i32 %187, %186
  %189 = load i32, ptr %57, align 4, !tbaa !5
  %190 = load i32, ptr %10, align 4, !tbaa !5
  %191 = load i32, ptr %7, align 4, !tbaa !13
  %192 = and i32 %191, %190
  %193 = xor i32 %189, %188
  %194 = xor i32 %193, %192
  %195 = xor i32 %194, %183
  store i32 %195, ptr %57, align 4, !tbaa !5
  %196 = call i32 @aead_random_generate_32() #3
  %197 = load i32, ptr %6, align 16, !tbaa !13
  %198 = xor i32 %197, %196
  store i32 %198, ptr %6, align 16, !tbaa !13
  %199 = load i32, ptr %83, align 4, !tbaa !10
  %200 = load i32, ptr %4, align 4, !tbaa !13
  %201 = and i32 %200, %199
  %202 = load i32, ptr %59, align 8, !tbaa !10
  %203 = load i32, ptr %12, align 4, !tbaa !10
  %204 = load i32, ptr %7, align 4, !tbaa !13
  %205 = and i32 %204, %203
  %206 = xor i32 %202, %201
  %207 = xor i32 %206, %205
  %208 = xor i32 %207, %196
  store i32 %208, ptr %59, align 8, !tbaa !10
  %209 = call i32 @aead_random_generate_32() #3
  %210 = load i32, ptr %6, align 16, !tbaa !13
  %211 = xor i32 %210, %209
  store i32 %211, ptr %6, align 16, !tbaa !13
  %212 = load i32, ptr %85, align 4, !tbaa !11
  %213 = load i32, ptr %4, align 4, !tbaa !13
  %214 = and i32 %213, %212
  %215 = load i32, ptr %61, align 4, !tbaa !11
  %216 = load i32, ptr %14, align 4, !tbaa !11
  %217 = load i32, ptr %7, align 4, !tbaa !13
  %218 = and i32 %217, %216
  %219 = xor i32 %215, %214
  %220 = xor i32 %219, %218
  %221 = xor i32 %220, %209
  store i32 %221, ptr %61, align 4, !tbaa !11
  %222 = load i32, ptr %10, align 4, !tbaa !5
  %223 = load i32, ptr %81, align 4, !tbaa !5
  %224 = and i32 %223, %222
  %225 = load i32, ptr %57, align 4, !tbaa !5
  %226 = xor i32 %225, %224
  store i32 %226, ptr %57, align 4, !tbaa !5
  %227 = call i32 @aead_random_generate_32() #3
  %228 = load i32, ptr %57, align 4, !tbaa !5
  %229 = xor i32 %228, %227
  store i32 %229, ptr %57, align 4, !tbaa !5
  %230 = load i32, ptr %83, align 4, !tbaa !10
  %231 = load i32, ptr %10, align 4, !tbaa !5
  %232 = and i32 %231, %230
  %233 = load i32, ptr %59, align 8, !tbaa !10
  %234 = load i32, ptr %12, align 4, !tbaa !10
  %235 = load i32, ptr %81, align 4, !tbaa !5
  %236 = and i32 %235, %234
  %237 = xor i32 %233, %232
  %238 = xor i32 %237, %236
  %239 = xor i32 %238, %227
  store i32 %239, ptr %59, align 8, !tbaa !10
  %240 = call i32 @aead_random_generate_32() #3
  %241 = load i32, ptr %57, align 4, !tbaa !5
  %242 = xor i32 %241, %240
  store i32 %242, ptr %57, align 4, !tbaa !5
  %243 = load i32, ptr %85, align 4, !tbaa !11
  %244 = load i32, ptr %10, align 4, !tbaa !5
  %245 = and i32 %244, %243
  %246 = load i32, ptr %61, align 4, !tbaa !11
  %247 = load i32, ptr %14, align 4, !tbaa !11
  %248 = load i32, ptr %81, align 4, !tbaa !5
  %249 = and i32 %248, %247
  %250 = xor i32 %246, %245
  %251 = xor i32 %250, %249
  %252 = xor i32 %251, %240
  store i32 %252, ptr %61, align 4, !tbaa !11
  %253 = load i32, ptr %12, align 4, !tbaa !10
  %254 = load i32, ptr %83, align 4, !tbaa !10
  %255 = and i32 %254, %253
  %256 = load i32, ptr %59, align 8, !tbaa !10
  %257 = xor i32 %256, %255
  store i32 %257, ptr %59, align 8, !tbaa !10
  %258 = call i32 @aead_random_generate_32() #3
  %259 = load i32, ptr %59, align 8, !tbaa !10
  %260 = xor i32 %259, %258
  store i32 %260, ptr %59, align 8, !tbaa !10
  %261 = load i32, ptr %85, align 4, !tbaa !11
  %262 = load i32, ptr %12, align 4, !tbaa !10
  %263 = and i32 %262, %261
  %264 = load i32, ptr %61, align 4, !tbaa !11
  %265 = load i32, ptr %14, align 4, !tbaa !11
  %266 = load i32, ptr %83, align 4, !tbaa !10
  %267 = and i32 %266, %265
  %268 = and i32 %265, %261
  %269 = xor i32 %264, %263
  %270 = xor i32 %269, %268
  %271 = xor i32 %270, %267
  %272 = xor i32 %271, %258
  store i32 %272, ptr %61, align 4, !tbaa !11
  %273 = load i32, ptr %6, align 16, !tbaa !13
  %274 = load i32, ptr %7, align 4, !tbaa !13
  %275 = and i32 %274, %273
  %276 = load i32, ptr %5, align 16, !tbaa !13
  %277 = xor i32 %276, %275
  store i32 %277, ptr %5, align 16, !tbaa !13
  %278 = call i32 @aead_random_generate_32() #3
  %279 = load i32, ptr %5, align 16, !tbaa !13
  %280 = xor i32 %279, %278
  store i32 %280, ptr %5, align 16, !tbaa !13
  %281 = load i32, ptr %81, align 4, !tbaa !5
  %282 = load i32, ptr %6, align 16, !tbaa !13
  %283 = and i32 %282, %281
  %284 = load i32, ptr %33, align 4, !tbaa !5
  %285 = load i32, ptr %57, align 4, !tbaa !5
  %286 = load i32, ptr %7, align 4, !tbaa !13
  %287 = and i32 %286, %285
  %288 = xor i32 %284, %283
  %289 = xor i32 %288, %287
  %290 = xor i32 %289, %278
  store i32 %290, ptr %33, align 4, !tbaa !5
  %291 = call i32 @aead_random_generate_32() #3
  %292 = load i32, ptr %5, align 16, !tbaa !13
  %293 = xor i32 %292, %291
  store i32 %293, ptr %5, align 16, !tbaa !13
  %294 = load i32, ptr %83, align 4, !tbaa !10
  %295 = load i32, ptr %6, align 16, !tbaa !13
  %296 = and i32 %295, %294
  %297 = load i32, ptr %35, align 8, !tbaa !10
  %298 = load i32, ptr %59, align 8, !tbaa !10
  %299 = load i32, ptr %7, align 4, !tbaa !13
  %300 = and i32 %299, %298
  %301 = xor i32 %297, %296
  %302 = xor i32 %301, %300
  %303 = xor i32 %302, %291
  store i32 %303, ptr %35, align 8, !tbaa !10
  %304 = call i32 @aead_random_generate_32() #3
  %305 = load i32, ptr %5, align 16, !tbaa !13
  %306 = xor i32 %305, %304
  store i32 %306, ptr %5, align 16, !tbaa !13
  %307 = load i32, ptr %85, align 4, !tbaa !11
  %308 = load i32, ptr %6, align 16, !tbaa !13
  %309 = and i32 %308, %307
  %310 = load i32, ptr %37, align 4, !tbaa !11
  %311 = load i32, ptr %61, align 4, !tbaa !11
  %312 = load i32, ptr %7, align 4, !tbaa !13
  %313 = and i32 %312, %311
  %314 = xor i32 %310, %309
  %315 = xor i32 %314, %313
  %316 = xor i32 %315, %304
  store i32 %316, ptr %37, align 4, !tbaa !11
  %317 = load i32, ptr %57, align 4, !tbaa !5
  %318 = load i32, ptr %81, align 4, !tbaa !5
  %319 = and i32 %318, %317
  %320 = load i32, ptr %33, align 4, !tbaa !5
  %321 = xor i32 %320, %319
  store i32 %321, ptr %33, align 4, !tbaa !5
  %322 = call i32 @aead_random_generate_32() #3
  %323 = load i32, ptr %33, align 4, !tbaa !5
  %324 = xor i32 %323, %322
  store i32 %324, ptr %33, align 4, !tbaa !5
  %325 = load i32, ptr %83, align 4, !tbaa !10
  %326 = load i32, ptr %57, align 4, !tbaa !5
  %327 = and i32 %326, %325
  %328 = load i32, ptr %35, align 8, !tbaa !10
  %329 = load i32, ptr %59, align 8, !tbaa !10
  %330 = load i32, ptr %81, align 4, !tbaa !5
  %331 = and i32 %330, %329
  %332 = xor i32 %328, %327
  %333 = xor i32 %332, %331
  %334 = xor i32 %333, %322
  store i32 %334, ptr %35, align 8, !tbaa !10
  %335 = call i32 @aead_random_generate_32() #3
  %336 = load i32, ptr %33, align 4, !tbaa !5
  %337 = xor i32 %336, %335
  store i32 %337, ptr %33, align 4, !tbaa !5
  %338 = load i32, ptr %85, align 4, !tbaa !11
  %339 = load i32, ptr %57, align 4, !tbaa !5
  %340 = and i32 %339, %338
  %341 = load i32, ptr %37, align 4, !tbaa !11
  %342 = load i32, ptr %61, align 4, !tbaa !11
  %343 = load i32, ptr %81, align 4, !tbaa !5
  %344 = and i32 %343, %342
  %345 = xor i32 %341, %340
  %346 = xor i32 %345, %344
  %347 = xor i32 %346, %335
  store i32 %347, ptr %37, align 4, !tbaa !11
  %348 = load i32, ptr %59, align 8, !tbaa !10
  %349 = load i32, ptr %83, align 4, !tbaa !10
  %350 = and i32 %349, %348
  %351 = load i32, ptr %35, align 8, !tbaa !10
  %352 = xor i32 %351, %350
  store i32 %352, ptr %35, align 8, !tbaa !10
  %353 = call i32 @aead_random_generate_32() #3
  %354 = load i32, ptr %35, align 8, !tbaa !10
  %355 = xor i32 %354, %353
  store i32 %355, ptr %35, align 8, !tbaa !10
  %356 = load i32, ptr %85, align 4, !tbaa !11
  %357 = load i32, ptr %59, align 8, !tbaa !10
  %358 = and i32 %357, %356
  %359 = load i32, ptr %37, align 4, !tbaa !11
  %360 = load i32, ptr %61, align 4, !tbaa !11
  %361 = load i32, ptr %83, align 4, !tbaa !10
  %362 = and i32 %361, %360
  %363 = and i32 %360, %356
  %364 = xor i32 %359, %358
  %365 = xor i32 %364, %363
  %366 = xor i32 %365, %362
  %367 = xor i32 %366, %353
  store i32 %367, ptr %37, align 4, !tbaa !11
  %368 = load i32, ptr %5, align 16, !tbaa !13
  %369 = load i32, ptr %6, align 16, !tbaa !13
  %370 = and i32 %369, %368
  %371 = load i32, ptr %4, align 4, !tbaa !13
  %372 = xor i32 %371, %370
  store i32 %372, ptr %4, align 4, !tbaa !13
  %373 = call i32 @aead_random_generate_32() #3
  %374 = load i32, ptr %4, align 4, !tbaa !13
  %375 = xor i32 %374, %373
  store i32 %375, ptr %4, align 4, !tbaa !13
  %376 = load i32, ptr %57, align 4, !tbaa !5
  %377 = load i32, ptr %5, align 16, !tbaa !13
  %378 = and i32 %377, %376
  %379 = load i32, ptr %10, align 4, !tbaa !5
  %380 = load i32, ptr %33, align 4, !tbaa !5
  %381 = load i32, ptr %6, align 16, !tbaa !13
  %382 = and i32 %381, %380
  %383 = xor i32 %379, %378
  %384 = xor i32 %383, %382
  %385 = xor i32 %384, %373
  store i32 %385, ptr %10, align 4, !tbaa !5
  %386 = call i32 @aead_random_generate_32() #3
  %387 = load i32, ptr %4, align 4, !tbaa !13
  %388 = xor i32 %387, %386
  store i32 %388, ptr %4, align 4, !tbaa !13
  %389 = load i32, ptr %59, align 8, !tbaa !10
  %390 = load i32, ptr %5, align 16, !tbaa !13
  %391 = and i32 %390, %389
  %392 = load i32, ptr %12, align 4, !tbaa !10
  %393 = load i32, ptr %35, align 8, !tbaa !10
  %394 = load i32, ptr %6, align 16, !tbaa !13
  %395 = and i32 %394, %393
  %396 = xor i32 %392, %391
  %397 = xor i32 %396, %395
  %398 = xor i32 %397, %386
  store i32 %398, ptr %12, align 4, !tbaa !10
  %399 = call i32 @aead_random_generate_32() #3
  %400 = load i32, ptr %4, align 4, !tbaa !13
  %401 = xor i32 %400, %399
  store i32 %401, ptr %4, align 4, !tbaa !13
  %402 = load i32, ptr %61, align 4, !tbaa !11
  %403 = load i32, ptr %5, align 16, !tbaa !13
  %404 = and i32 %403, %402
  %405 = load i32, ptr %14, align 4, !tbaa !11
  %406 = load i32, ptr %37, align 4, !tbaa !11
  %407 = load i32, ptr %6, align 16, !tbaa !13
  %408 = and i32 %407, %406
  %409 = xor i32 %405, %404
  %410 = xor i32 %409, %408
  %411 = xor i32 %410, %399
  store i32 %411, ptr %14, align 4, !tbaa !11
  %412 = load i32, ptr %33, align 4, !tbaa !5
  %413 = load i32, ptr %57, align 4, !tbaa !5
  %414 = and i32 %413, %412
  %415 = load i32, ptr %10, align 4, !tbaa !5
  %416 = xor i32 %415, %414
  store i32 %416, ptr %10, align 4, !tbaa !5
  %417 = call i32 @aead_random_generate_32() #3
  %418 = load i32, ptr %10, align 4, !tbaa !5
  %419 = xor i32 %418, %417
  store i32 %419, ptr %10, align 4, !tbaa !5
  %420 = load i32, ptr %59, align 8, !tbaa !10
  %421 = load i32, ptr %33, align 4, !tbaa !5
  %422 = and i32 %421, %420
  %423 = load i32, ptr %12, align 4, !tbaa !10
  %424 = load i32, ptr %35, align 8, !tbaa !10
  %425 = load i32, ptr %57, align 4, !tbaa !5
  %426 = and i32 %425, %424
  %427 = xor i32 %423, %422
  %428 = xor i32 %427, %426
  %429 = xor i32 %428, %417
  store i32 %429, ptr %12, align 4, !tbaa !10
  %430 = call i32 @aead_random_generate_32() #3
  %431 = load i32, ptr %10, align 4, !tbaa !5
  %432 = xor i32 %431, %430
  store i32 %432, ptr %10, align 4, !tbaa !5
  %433 = load i32, ptr %61, align 4, !tbaa !11
  %434 = load i32, ptr %33, align 4, !tbaa !5
  %435 = and i32 %434, %433
  %436 = load i32, ptr %14, align 4, !tbaa !11
  %437 = load i32, ptr %37, align 4, !tbaa !11
  %438 = load i32, ptr %57, align 4, !tbaa !5
  %439 = and i32 %438, %437
  %440 = xor i32 %436, %435
  %441 = xor i32 %440, %439
  %442 = xor i32 %441, %430
  store i32 %442, ptr %14, align 4, !tbaa !11
  %443 = load i32, ptr %35, align 8, !tbaa !10
  %444 = load i32, ptr %59, align 8, !tbaa !10
  %445 = and i32 %444, %443
  %446 = load i32, ptr %12, align 4, !tbaa !10
  %447 = xor i32 %446, %445
  store i32 %447, ptr %12, align 4, !tbaa !10
  %448 = call i32 @aead_random_generate_32() #3
  %449 = load i32, ptr %12, align 4, !tbaa !10
  %450 = xor i32 %449, %448
  store i32 %450, ptr %12, align 4, !tbaa !10
  %451 = load i32, ptr %61, align 4, !tbaa !11
  %452 = load i32, ptr %35, align 8, !tbaa !10
  %453 = and i32 %452, %451
  %454 = load i32, ptr %14, align 4, !tbaa !11
  %455 = load i32, ptr %37, align 4, !tbaa !11
  %456 = load i32, ptr %59, align 8, !tbaa !10
  %457 = and i32 %456, %455
  %458 = and i32 %455, %451
  %459 = xor i32 %454, %453
  %460 = xor i32 %459, %458
  %461 = xor i32 %460, %457
  %462 = xor i32 %461, %448
  store i32 %462, ptr %14, align 4, !tbaa !11
  %463 = load i32, ptr %4, align 4, !tbaa !13
  %464 = load i32, ptr %5, align 16, !tbaa !13
  %465 = and i32 %464, %463
  %466 = load i32, ptr %7, align 4, !tbaa !13
  %467 = xor i32 %466, %465
  store i32 %467, ptr %7, align 4, !tbaa !13
  %468 = call i32 @aead_random_generate_32() #3
  %469 = load i32, ptr %7, align 4, !tbaa !13
  %470 = xor i32 %469, %468
  store i32 %470, ptr %7, align 4, !tbaa !13
  %471 = load i32, ptr %33, align 4, !tbaa !5
  %472 = load i32, ptr %4, align 4, !tbaa !13
  %473 = and i32 %472, %471
  %474 = load i32, ptr %81, align 4, !tbaa !5
  %475 = load i32, ptr %10, align 4, !tbaa !5
  %476 = load i32, ptr %5, align 16, !tbaa !13
  %477 = and i32 %476, %475
  %478 = xor i32 %474, %473
  %479 = xor i32 %478, %477
  %480 = xor i32 %479, %468
  store i32 %480, ptr %81, align 4, !tbaa !5
  %481 = call i32 @aead_random_generate_32() #3
  %482 = load i32, ptr %7, align 4, !tbaa !13
  %483 = xor i32 %482, %481
  store i32 %483, ptr %7, align 4, !tbaa !13
  %484 = load i32, ptr %35, align 8, !tbaa !10
  %485 = load i32, ptr %4, align 4, !tbaa !13
  %486 = and i32 %485, %484
  %487 = load i32, ptr %83, align 4, !tbaa !10
  %488 = load i32, ptr %12, align 4, !tbaa !10
  %489 = load i32, ptr %5, align 16, !tbaa !13
  %490 = and i32 %489, %488
  %491 = xor i32 %487, %486
  %492 = xor i32 %491, %490
  %493 = xor i32 %492, %481
  store i32 %493, ptr %83, align 4, !tbaa !10
  %494 = call i32 @aead_random_generate_32() #3
  %495 = load i32, ptr %7, align 4, !tbaa !13
  %496 = xor i32 %495, %494
  store i32 %496, ptr %7, align 4, !tbaa !13
  %497 = load i32, ptr %37, align 4, !tbaa !11
  %498 = load i32, ptr %4, align 4, !tbaa !13
  %499 = and i32 %498, %497
  %500 = load i32, ptr %85, align 4, !tbaa !11
  %501 = load i32, ptr %14, align 4, !tbaa !11
  %502 = load i32, ptr %5, align 16, !tbaa !13
  %503 = and i32 %502, %501
  %504 = xor i32 %500, %499
  %505 = xor i32 %504, %503
  %506 = xor i32 %505, %494
  store i32 %506, ptr %85, align 4, !tbaa !11
  %507 = load i32, ptr %10, align 4, !tbaa !5
  %508 = load i32, ptr %33, align 4, !tbaa !5
  %509 = and i32 %508, %507
  %510 = load i32, ptr %81, align 4, !tbaa !5
  %511 = xor i32 %510, %509
  store i32 %511, ptr %81, align 4, !tbaa !5
  %512 = call i32 @aead_random_generate_32() #3
  %513 = load i32, ptr %81, align 4, !tbaa !5
  %514 = xor i32 %513, %512
  store i32 %514, ptr %81, align 4, !tbaa !5
  %515 = load i32, ptr %35, align 8, !tbaa !10
  %516 = load i32, ptr %10, align 4, !tbaa !5
  %517 = and i32 %516, %515
  %518 = load i32, ptr %83, align 4, !tbaa !10
  %519 = load i32, ptr %12, align 4, !tbaa !10
  %520 = load i32, ptr %33, align 4, !tbaa !5
  %521 = and i32 %520, %519
  %522 = xor i32 %518, %517
  %523 = xor i32 %522, %521
  %524 = xor i32 %523, %512
  store i32 %524, ptr %83, align 4, !tbaa !10
  %525 = call i32 @aead_random_generate_32() #3
  %526 = load i32, ptr %81, align 4, !tbaa !5
  %527 = xor i32 %526, %525
  store i32 %527, ptr %81, align 4, !tbaa !5
  %528 = load i32, ptr %37, align 4, !tbaa !11
  %529 = load i32, ptr %10, align 4, !tbaa !5
  %530 = and i32 %529, %528
  %531 = load i32, ptr %85, align 4, !tbaa !11
  %532 = load i32, ptr %14, align 4, !tbaa !11
  %533 = load i32, ptr %33, align 4, !tbaa !5
  %534 = and i32 %533, %532
  %535 = xor i32 %531, %530
  %536 = xor i32 %535, %534
  %537 = xor i32 %536, %525
  store i32 %537, ptr %85, align 4, !tbaa !11
  %538 = load i32, ptr %12, align 4, !tbaa !10
  %539 = load i32, ptr %35, align 8, !tbaa !10
  %540 = and i32 %539, %538
  %541 = load i32, ptr %83, align 4, !tbaa !10
  %542 = xor i32 %541, %540
  store i32 %542, ptr %83, align 4, !tbaa !10
  %543 = call i32 @aead_random_generate_32() #3
  %544 = load i32, ptr %83, align 4, !tbaa !10
  %545 = xor i32 %544, %543
  %546 = load i32, ptr %12, align 4, !tbaa !10
  %547 = load i32, ptr %85, align 4, !tbaa !11
  %548 = load i32, ptr %14, align 4, !tbaa !11
  %549 = load i32, ptr %7, align 4, !tbaa !13
  %550 = load i32, ptr %4, align 4, !tbaa !13
  %551 = load i32, ptr %81, align 4, !tbaa !5
  %552 = load i32, ptr %10, align 4, !tbaa !5
  %553 = load i32, ptr %.0158, align 4, !tbaa !13
  %554 = xor i32 %550, %553
  %555 = xor i32 %554, %549
  store i32 %555, ptr %4, align 4, !tbaa !13
  %556 = getelementptr inbounds i8, ptr %.0158, i64 4
  %557 = load i32, ptr %556, align 4, !tbaa !5
  %558 = xor i32 %552, %557
  %559 = xor i32 %558, %551
  store i32 %559, ptr %10, align 4, !tbaa !5
  %560 = getelementptr inbounds i8, ptr %.0158, i64 8
  %561 = load i32, ptr %560, align 4, !tbaa !10
  %562 = xor i32 %545, %561
  %563 = xor i32 %562, %546
  store i32 %563, ptr %12, align 4, !tbaa !10
  %564 = getelementptr inbounds i8, ptr %.0158, i64 12
  %565 = load i32, ptr %564, align 4, !tbaa !11
  %566 = xor i32 %548, %565
  %567 = getelementptr inbounds i8, ptr %.0158, i64 16
  %568 = load <4 x i32>, ptr %5, align 16, !tbaa !14
  %569 = extractelement <4 x i32> %568, i64 3
  %570 = and i32 %546, %569
  %571 = extractelement <4 x i32> %568, i64 2
  %572 = and i32 %571, %548
  %573 = and i32 %548, %569
  %574 = xor i32 %547, %570
  %575 = xor i32 %574, %573
  %576 = xor i32 %575, %572
  %577 = xor i32 %576, %543
  %578 = xor i32 %566, %577
  store i32 %578, ptr %14, align 4, !tbaa !11
  %579 = load <4 x i32>, ptr %567, align 4, !tbaa !14
  %580 = xor <4 x i32> %579, %568
  store <4 x i32> %580, ptr %5, align 16, !tbaa !14
  %581 = getelementptr inbounds i8, ptr %.0158, i64 32
  %582 = load <4 x i32>, ptr %581, align 4, !tbaa !14
  %583 = load <4 x i32>, ptr %6, align 16, !tbaa !14
  %584 = xor <4 x i32> %583, %582
  store <4 x i32> %584, ptr %6, align 16, !tbaa !14
  %585 = getelementptr inbounds i8, ptr %.0158, i64 48
  %586 = load i32, ptr %585, align 4, !tbaa !13
  %587 = xor i32 %586, %549
  store i32 %587, ptr %7, align 4, !tbaa !13
  %588 = getelementptr inbounds i8, ptr %.0158, i64 52
  %589 = load i32, ptr %588, align 4, !tbaa !5
  %590 = xor i32 %589, %551
  store i32 %590, ptr %81, align 4, !tbaa !5
  %591 = getelementptr inbounds i8, ptr %.0158, i64 56
  %592 = load i32, ptr %591, align 4, !tbaa !10
  %593 = xor i32 %592, %545
  store i32 %593, ptr %83, align 4, !tbaa !10
  %594 = getelementptr inbounds i8, ptr %.0158, i64 60
  %595 = load i32, ptr %594, align 4, !tbaa !11
  %596 = xor i32 %595, %577
  store i32 %596, ptr %85, align 4, !tbaa !11
  %597 = add nuw nsw i8 %.0156157, 1
  %598 = getelementptr inbounds i8, ptr %.0158, i64 -64
  %exitcond.not = icmp eq i8 %597, 14
  br i1 %exitcond.not, label %599, label %161, !llvm.loop !15

599:                                              ; preds = %161
  %600 = xor i32 %559, %555
  %601 = xor i32 %600, %563
  %602 = xor i32 %601, %578
  %603 = lshr i32 %602, 24
  %604 = trunc nuw i32 %603 to i8
  store i8 %604, ptr %1, align 1, !tbaa !12
  %605 = lshr i32 %602, 16
  %606 = trunc i32 %605 to i8
  %607 = getelementptr inbounds i8, ptr %1, i64 1
  store i8 %606, ptr %607, align 1, !tbaa !12
  %608 = lshr i32 %602, 8
  %609 = trunc i32 %608 to i8
  %610 = getelementptr inbounds i8, ptr %1, i64 2
  store i8 %609, ptr %610, align 1, !tbaa !12
  %611 = trunc i32 %602 to i8
  %612 = getelementptr inbounds i8, ptr %1, i64 3
  store i8 %611, ptr %612, align 1, !tbaa !12
  %shift = shufflevector <4 x i32> %580, <4 x i32> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>
  %shift189 = shufflevector <4 x i32> %580, <4 x i32> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>
  %613 = xor <4 x i32> %shift, %shift189
  %shift190 = shufflevector <4 x i32> %580, <4 x i32> poison, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>
  %614 = xor <4 x i32> %613, %shift190
  %615 = xor <4 x i32> %614, %580
  %616 = extractelement <4 x i32> %615, i64 0
  %617 = lshr i32 %616, 24
  %618 = trunc nuw i32 %617 to i8
  %619 = getelementptr inbounds i8, ptr %1, i64 4
  store i8 %618, ptr %619, align 1, !tbaa !12
  %620 = lshr i32 %616, 16
  %621 = trunc i32 %620 to i8
  %622 = getelementptr inbounds i8, ptr %1, i64 5
  store i8 %621, ptr %622, align 1, !tbaa !12
  %623 = lshr i32 %616, 8
  %624 = trunc i32 %623 to i8
  %625 = getelementptr inbounds i8, ptr %1, i64 6
  store i8 %624, ptr %625, align 1, !tbaa !12
  %626 = trunc i32 %616 to i8
  %627 = getelementptr inbounds i8, ptr %1, i64 7
  store i8 %626, ptr %627, align 1, !tbaa !12
  %shift191 = shufflevector <4 x i32> %584, <4 x i32> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>
  %shift192 = shufflevector <4 x i32> %584, <4 x i32> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>
  %628 = xor <4 x i32> %shift191, %shift192
  %shift193 = shufflevector <4 x i32> %584, <4 x i32> poison, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>
  %629 = xor <4 x i32> %628, %shift193
  %630 = xor <4 x i32> %629, %584
  %631 = extractelement <4 x i32> %630, i64 0
  %632 = lshr i32 %631, 24
  %633 = trunc nuw i32 %632 to i8
  %634 = getelementptr inbounds i8, ptr %1, i64 8
  store i8 %633, ptr %634, align 1, !tbaa !12
  %635 = lshr i32 %631, 16
  %636 = trunc i32 %635 to i8
  %637 = getelementptr inbounds i8, ptr %1, i64 9
  store i8 %636, ptr %637, align 1, !tbaa !12
  %638 = lshr i32 %631, 8
  %639 = trunc i32 %638 to i8
  %640 = getelementptr inbounds i8, ptr %1, i64 10
  store i8 %639, ptr %640, align 1, !tbaa !12
  %641 = trunc i32 %631 to i8
  %642 = getelementptr inbounds i8, ptr %1, i64 11
  store i8 %641, ptr %642, align 1, !tbaa !12
  %643 = xor i32 %590, %587
  %644 = xor i32 %643, %593
  %645 = xor i32 %644, %596
  %646 = lshr i32 %645, 24
  %647 = trunc nuw i32 %646 to i8
  %648 = getelementptr inbounds i8, ptr %1, i64 12
  store i8 %647, ptr %648, align 1, !tbaa !12
  %649 = lshr i32 %645, 16
  %650 = trunc i32 %649 to i8
  %651 = getelementptr inbounds i8, ptr %1, i64 13
  store i8 %650, ptr %651, align 1, !tbaa !12
  %652 = lshr i32 %645, 8
  %653 = trunc i32 %652 to i8
  %654 = getelementptr inbounds i8, ptr %1, i64 14
  store i8 %653, ptr %654, align 1, !tbaa !12
  %655 = trunc i32 %645 to i8
  %656 = getelementptr inbounds i8, ptr %1, i64 15
  store i8 %655, ptr %656, align 1, !tbaa !12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #3
  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
}

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

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

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

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

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,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,LCSSAPass,LoopRotatePass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass