; LLVM IR from square/subzero :: core/trezor-crypto/ed25519-donna (modm-donna-32bit)

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

@modm_m = external hidden constant [9 x i32], align 16
@modm_mu = external hidden constant [9 x i32], align 16

; Function Attrs: nounwind uwtable
declare dso_local void @reduce256_modm(ptr noundef) #0

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

; Function Attrs: nounwind uwtable
declare hidden i32 @lt_modm(i32 noundef, i32 noundef) #0

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

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

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

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

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


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

@modm_m = external hidden local_unnamed_addr constant [9 x i32], align 16
@modm_mu = external hidden local_unnamed_addr constant [9 x i32], align 16

; Function Attrs: nounwind uwtable
declare dso_local void @reduce256_modm(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare hidden i32 @lt_modm(i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @barrett_reduce256_modm(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2) local_unnamed_addr #0 {
  %4 = load i32, ptr @modm_mu, align 16, !tbaa !5
  %5 = zext i32 %4 to i64
  %6 = getelementptr inbounds i8, ptr %1, i64 28
  %7 = load i32, ptr %6, align 4, !tbaa !5
  %8 = zext i32 %7 to i64
  %9 = mul nuw i64 %8, %5
  %10 = load i32, ptr getelementptr inbounds (i8, ptr @modm_mu, i64 4), align 4, !tbaa !5
  %11 = zext i32 %10 to i64
  %12 = getelementptr inbounds i8, ptr %1, i64 24
  %13 = load i32, ptr %12, align 4, !tbaa !5
  %14 = zext i32 %13 to i64
  %15 = mul nuw i64 %14, %11
  %16 = add i64 %15, %9
  %17 = load i32, ptr getelementptr inbounds (i8, ptr @modm_mu, i64 8), align 8, !tbaa !5
  %18 = zext i32 %17 to i64
  %19 = getelementptr inbounds i8, ptr %1, i64 20
  %20 = load i32, ptr %19, align 4, !tbaa !5
  %21 = zext i32 %20 to i64
  %22 = mul nuw i64 %21, %18
  %23 = add i64 %16, %22
  %24 = load i32, ptr getelementptr inbounds (i8, ptr @modm_mu, i64 12), align 4, !tbaa !5
  %25 = zext i32 %24 to i64
  %26 = getelementptr inbounds i8, ptr %1, i64 16
  %27 = load i32, ptr %26, align 4, !tbaa !5
  %28 = zext i32 %27 to i64
  %29 = mul nuw i64 %28, %25
  %30 = add i64 %23, %29
  %31 = load i32, ptr getelementptr inbounds (i8, ptr @modm_mu, i64 16), align 16, !tbaa !5
  %32 = zext i32 %31 to i64
  %33 = getelementptr inbounds i8, ptr %1, i64 12
  %34 = load i32, ptr %33, align 4, !tbaa !5
  %35 = zext i32 %34 to i64
  %36 = mul nuw i64 %35, %32
  %37 = add i64 %30, %36
  %38 = load i32, ptr getelementptr inbounds (i8, ptr @modm_mu, i64 20), align 4, !tbaa !5
  %39 = zext i32 %38 to i64
  %40 = getelementptr inbounds i8, ptr %1, i64 8
  %41 = load i32, ptr %40, align 4, !tbaa !5
  %42 = zext i32 %41 to i64
  %43 = mul nuw i64 %42, %39
  %44 = add i64 %37, %43
  %45 = load i32, ptr getelementptr inbounds (i8, ptr @modm_mu, i64 24), align 8, !tbaa !5
  %46 = zext i32 %45 to i64
  %47 = getelementptr inbounds i8, ptr %1, i64 4
  %48 = load i32, ptr %47, align 4, !tbaa !5
  %49 = zext i32 %48 to i64
  %50 = mul nuw i64 %49, %46
  %51 = add i64 %44, %50
  %52 = load i32, ptr getelementptr inbounds (i8, ptr @modm_mu, i64 28), align 4, !tbaa !5
  %53 = zext i32 %52 to i64
  %54 = load i32, ptr %1, align 4, !tbaa !5
  %55 = zext i32 %54 to i64
  %56 = mul nuw i64 %55, %53
  %57 = add i64 %51, %56
  %58 = lshr i64 %57, 30
  %59 = getelementptr inbounds i8, ptr %1, i64 32
  %60 = load i32, ptr %59, align 4, !tbaa !5
  %61 = zext i32 %60 to i64
  %62 = mul nuw i64 %61, %5
  %63 = mul nuw i64 %11, %8
  %64 = mul nuw i64 %18, %14
  %65 = mul nuw i64 %25, %21
  %66 = mul nuw i64 %32, %28
  %67 = mul nuw i64 %39, %35
  %68 = mul nuw i64 %46, %42
  %69 = mul nuw i64 %53, %49
  %70 = load i32, ptr getelementptr inbounds (i8, ptr @modm_mu, i64 32), align 16, !tbaa !5
  %71 = zext i32 %70 to i64
  %72 = mul nuw i64 %71, %55
  %73 = add i64 %64, %63
  %74 = add i64 %73, %65
  %75 = add i64 %74, %66
  %76 = add i64 %75, %67
  %77 = add i64 %76, %68
  %78 = add i64 %77, %69
  %79 = add i64 %78, %62
  %80 = add i64 %79, %72
  %81 = add i64 %80, %58
  %82 = lshr i64 %81, 24
  %83 = and i64 %82, 63
  %84 = lshr i64 %81, 30
  %85 = mul nuw i64 %61, %11
  %86 = mul nuw i64 %18, %8
  %87 = mul nuw i64 %25, %14
  %88 = mul nuw i64 %32, %21
  %89 = mul nuw i64 %39, %28
  %90 = mul nuw i64 %46, %35
  %91 = mul nuw i64 %53, %42
  %92 = mul nuw i64 %71, %49
  %93 = add i64 %87, %86
  %94 = add i64 %93, %88
  %95 = add i64 %94, %89
  %96 = add i64 %95, %90
  %97 = add i64 %96, %91
  %98 = add i64 %97, %85
  %99 = add i64 %98, %92
  %100 = add i64 %99, %84
  %101 = shl i64 %100, 6
  %102 = and i64 %101, 1073741760
  %103 = or disjoint i64 %102, %83
  %104 = lshr i64 %100, 24
  %105 = and i64 %104, 63
  %106 = lshr i64 %100, 30
  %107 = mul nuw i64 %61, %18
  %108 = mul nuw i64 %25, %8
  %109 = mul nuw i64 %32, %14
  %110 = mul nuw i64 %39, %21
  %111 = mul nuw i64 %46, %28
  %112 = mul nuw i64 %53, %35
  %113 = mul nuw i64 %71, %42
  %114 = add i64 %109, %108
  %115 = add i64 %114, %110
  %116 = add i64 %115, %111
  %117 = add i64 %116, %112
  %118 = add i64 %117, %107
  %119 = add i64 %118, %113
  %120 = add i64 %119, %106
  %121 = shl i64 %120, 6
  %122 = and i64 %121, 1073741760
  %123 = or disjoint i64 %122, %105
  %124 = lshr i64 %120, 24
  %125 = and i64 %124, 63
  %126 = lshr i64 %120, 30
  %127 = mul nuw i64 %61, %25
  %128 = mul nuw i64 %32, %8
  %129 = mul nuw i64 %39, %14
  %130 = mul nuw i64 %46, %21
  %131 = mul nuw i64 %53, %28
  %132 = mul nuw i64 %71, %35
  %133 = add i64 %129, %128
  %134 = add i64 %133, %130
  %135 = add i64 %134, %131
  %136 = add i64 %135, %127
  %137 = add i64 %136, %132
  %138 = add i64 %137, %126
  %139 = shl i64 %138, 6
  %140 = and i64 %139, 1073741760
  %141 = or disjoint i64 %140, %125
  %142 = lshr i64 %138, 24
  %143 = and i64 %142, 63
  %144 = lshr i64 %138, 30
  %145 = mul nuw i64 %61, %32
  %146 = mul nuw i64 %39, %8
  %147 = mul nuw i64 %46, %14
  %148 = mul nuw i64 %53, %21
  %149 = mul nuw i64 %71, %28
  %150 = add i64 %147, %146
  %151 = add i64 %150, %148
  %152 = add i64 %151, %145
  %153 = add i64 %152, %149
  %154 = add i64 %153, %144
  %155 = shl i64 %154, 6
  %156 = and i64 %155, 1073741760
  %157 = or disjoint i64 %156, %143
  %158 = lshr i64 %154, 24
  %159 = and i64 %158, 63
  %160 = lshr i64 %154, 30
  %161 = mul nuw i64 %61, %39
  %162 = mul nuw i64 %46, %8
  %163 = mul nuw i64 %53, %14
  %164 = mul nuw i64 %71, %21
  %165 = add i64 %163, %162
  %166 = add i64 %165, %161
  %167 = add i64 %166, %164
  %168 = add i64 %167, %160
  %169 = shl i64 %168, 6
  %170 = and i64 %169, 1073741760
  %171 = or disjoint i64 %170, %159
  %172 = lshr i64 %168, 24
  %173 = and i64 %172, 63
  %174 = lshr i64 %168, 30
  %175 = mul nuw i64 %61, %46
  %176 = mul nuw i64 %53, %8
  %177 = add i64 %175, %176
  %178 = mul nuw i64 %71, %14
  %179 = add i64 %177, %178
  %180 = add i64 %179, %174
  %181 = shl i64 %180, 6
  %182 = and i64 %181, 1073741760
  %183 = or disjoint i64 %182, %173
  %184 = lshr i64 %180, 24
  %185 = and i64 %184, 63
  %186 = lshr i64 %180, 30
  %187 = mul nuw i64 %61, %53
  %188 = mul nuw i64 %71, %8
  %189 = add i64 %188, %187
  %190 = add i64 %189, %186
  %191 = shl i64 %190, 6
  %192 = and i64 %191, 1073741760
  %193 = or disjoint i64 %192, %185
  %194 = lshr i64 %190, 24
  %195 = and i64 %194, 63
  %196 = lshr i64 %190, 30
  %197 = mul nuw i64 %71, %61
  %198 = add i64 %196, %197
  %199 = shl i64 %198, 6
  %200 = and i64 %199, 1073741760
  %201 = or disjoint i64 %200, %195
  %202 = lshr i64 %198, 24
  %203 = load i32, ptr @modm_m, align 16, !tbaa !5
  %204 = zext i32 %203 to i64
  %205 = mul nuw nsw i64 %103, %204
  %206 = trunc i64 %205 to i32
  %207 = and i32 %206, 1073741823
  %208 = lshr i64 %205, 30
  %209 = mul nuw nsw i64 %123, %204
  %210 = load i32, ptr getelementptr inbounds (i8, ptr @modm_m, i64 4), align 4, !tbaa !5
  %211 = zext i32 %210 to i64
  %212 = mul nuw nsw i64 %103, %211
  %213 = add nuw nsw i64 %208, %212
  %214 = add nuw nsw i64 %213, %209
  %215 = trunc i64 %214 to i32
  %216 = and i32 %215, 1073741823
  %217 = lshr i64 %214, 30
  %218 = mul nuw nsw i64 %141, %204
  %219 = mul nuw nsw i64 %123, %211
  %220 = load i32, ptr getelementptr inbounds (i8, ptr @modm_m, i64 8), align 8, !tbaa !5
  %221 = zext i32 %220 to i64
  %222 = mul nuw nsw i64 %103, %221
  %223 = add nuw nsw i64 %219, %222
  %224 = add nuw i64 %223, %218
  %225 = add nuw i64 %224, %217
  %226 = trunc i64 %225 to i32
  %227 = and i32 %226, 1073741823
  %228 = lshr i64 %225, 30
  %229 = mul nuw nsw i64 %157, %204
  %230 = mul nuw nsw i64 %141, %211
  %231 = mul nuw nsw i64 %123, %221
  %232 = load i32, ptr getelementptr inbounds (i8, ptr @modm_m, i64 12), align 4, !tbaa !5
  %233 = zext i32 %232 to i64
  %234 = mul nuw nsw i64 %103, %233
  %235 = add nuw nsw i64 %231, %234
  %236 = add nuw i64 %235, %230
  %237 = add nuw i64 %236, %229
  %238 = add nuw i64 %237, %228
  %239 = trunc i64 %238 to i32
  %240 = and i32 %239, 1073741823
  %241 = lshr i64 %238, 30
  %242 = mul nuw nsw i64 %171, %204
  %243 = mul nuw nsw i64 %157, %211
  %244 = mul nuw nsw i64 %141, %221
  %245 = mul nuw nsw i64 %123, %233
  %246 = load i32, ptr getelementptr inbounds (i8, ptr @modm_m, i64 16), align 16, !tbaa !5
  %247 = zext i32 %246 to i64
  %248 = mul nuw nsw i64 %103, %247
  %249 = add nuw nsw i64 %245, %248
  %250 = add nuw i64 %249, %244
  %251 = add nuw i64 %250, %243
  %252 = add i64 %251, %242
  %253 = add i64 %252, %241
  %254 = trunc i64 %253 to i32
  %255 = and i32 %254, 1073741823
  %256 = lshr i64 %253, 30
  %257 = mul nuw nsw i64 %183, %204
  %258 = mul nuw nsw i64 %171, %211
  %259 = mul nuw nsw i64 %157, %221
  %260 = mul nuw nsw i64 %141, %233
  %261 = mul nuw nsw i64 %123, %247
  %262 = load i32, ptr getelementptr inbounds (i8, ptr @modm_m, i64 20), align 4, !tbaa !5
  %263 = zext i32 %262 to i64
  %264 = mul nuw nsw i64 %103, %263
  %265 = add nuw nsw i64 %261, %264
  %266 = add nuw i64 %265, %260
  %267 = add nuw i64 %266, %259
  %268 = add i64 %267, %258
  %269 = add i64 %268, %257
  %270 = add i64 %269, %256
  %271 = trunc i64 %270 to i32
  %272 = and i32 %271, 1073741823
  %273 = lshr i64 %270, 30
  %274 = mul nuw nsw i64 %193, %204
  %275 = mul nuw nsw i64 %183, %211
  %276 = mul nuw nsw i64 %171, %221
  %277 = mul nuw nsw i64 %157, %233
  %278 = mul nuw nsw i64 %141, %247
  %279 = mul nuw nsw i64 %123, %263
  %280 = load i32, ptr getelementptr inbounds (i8, ptr @modm_m, i64 24), align 8, !tbaa !5
  %281 = zext i32 %280 to i64
  %282 = mul nuw nsw i64 %103, %281
  %283 = add nuw nsw i64 %279, %282
  %284 = add nuw i64 %283, %278
  %285 = add nuw i64 %284, %277
  %286 = add i64 %285, %276
  %287 = add i64 %286, %275
  %288 = add i64 %287, %274
  %289 = add i64 %288, %273
  %290 = trunc i64 %289 to i32
  %291 = and i32 %290, 1073741823
  %292 = lshr i64 %289, 30
  %293 = mul nuw nsw i64 %201, %204
  %294 = mul nuw nsw i64 %193, %211
  %295 = mul nuw nsw i64 %183, %221
  %296 = mul nuw nsw i64 %171, %233
  %297 = mul nuw nsw i64 %157, %247
  %298 = mul nuw nsw i64 %141, %263
  %299 = mul nuw nsw i64 %123, %281
  %300 = load i32, ptr getelementptr inbounds (i8, ptr @modm_m, i64 28), align 4, !tbaa !5
  %301 = zext i32 %300 to i64
  %302 = mul nuw nsw i64 %103, %301
  %303 = add nuw nsw i64 %299, %302
  %304 = add nuw i64 %303, %298
  %305 = add nuw i64 %304, %297
  %306 = add i64 %305, %296
  %307 = add i64 %306, %295
  %308 = add i64 %307, %294
  %309 = add i64 %308, %293
  %310 = add i64 %309, %292
  %311 = trunc i64 %310 to i32
  %312 = and i32 %311, 1073741823
  %313 = lshr i64 %310, 30
  %314 = mul i64 %202, %204
  %315 = mul nuw nsw i64 %201, %211
  %316 = mul nuw nsw i64 %193, %221
  %317 = mul nuw nsw i64 %183, %233
  %318 = mul nuw nsw i64 %171, %247
  %319 = mul nuw nsw i64 %157, %263
  %320 = mul nuw nsw i64 %141, %281
  %321 = mul nuw nsw i64 %123, %301
  %322 = load i32, ptr getelementptr inbounds (i8, ptr @modm_m, i64 32), align 16, !tbaa !5
  %323 = zext i32 %322 to i64
  %324 = mul nuw nsw i64 %103, %323
  %325 = add nuw nsw i64 %321, %324
  %326 = add nuw i64 %325, %320
  %327 = add nuw i64 %326, %319
  %328 = add i64 %327, %318
  %329 = add i64 %328, %317
  %330 = add i64 %329, %316
  %331 = add i64 %330, %314
  %332 = add i64 %331, %315
  %333 = add i64 %332, %313
  %334 = trunc i64 %333 to i32
  %335 = and i32 %334, 16777215
  %336 = load i32, ptr %2, align 4, !tbaa !5
  %337 = tail call i32 @lt_modm(i32 noundef %336, i32 noundef %207)
  %338 = load i32, ptr %2, align 4, !tbaa !5
  %339 = shl i32 %337, 30
  %340 = add i32 %339, %338
  %341 = sub i32 %340, %207
  store i32 %341, ptr %0, align 4, !tbaa !5
  %342 = add i32 %216, %337
  %343 = getelementptr inbounds i8, ptr %2, i64 4
  %344 = load i32, ptr %343, align 4, !tbaa !5
  %345 = tail call i32 @lt_modm(i32 noundef %344, i32 noundef %342)
  %346 = load i32, ptr %343, align 4, !tbaa !5
  %347 = shl i32 %345, 30
  %348 = add i32 %347, %346
  %349 = sub i32 %348, %342
  %350 = getelementptr inbounds i8, ptr %0, i64 4
  store i32 %349, ptr %350, align 4, !tbaa !5
  %351 = add i32 %227, %345
  %352 = getelementptr inbounds i8, ptr %2, i64 8
  %353 = load i32, ptr %352, align 4, !tbaa !5
  %354 = tail call i32 @lt_modm(i32 noundef %353, i32 noundef %351)
  %355 = load i32, ptr %352, align 4, !tbaa !5
  %356 = shl i32 %354, 30
  %357 = add i32 %356, %355
  %358 = sub i32 %357, %351
  %359 = getelementptr inbounds i8, ptr %0, i64 8
  store i32 %358, ptr %359, align 4, !tbaa !5
  %360 = add i32 %240, %354
  %361 = getelementptr inbounds i8, ptr %2, i64 12
  %362 = load i32, ptr %361, align 4, !tbaa !5
  %363 = tail call i32 @lt_modm(i32 noundef %362, i32 noundef %360)
  %364 = load i32, ptr %361, align 4, !tbaa !5
  %365 = shl i32 %363, 30
  %366 = add i32 %365, %364
  %367 = sub i32 %366, %360
  %368 = getelementptr inbounds i8, ptr %0, i64 12
  store i32 %367, ptr %368, align 4, !tbaa !5
  %369 = add i32 %255, %363
  %370 = getelementptr inbounds i8, ptr %2, i64 16
  %371 = load i32, ptr %370, align 4, !tbaa !5
  %372 = tail call i32 @lt_modm(i32 noundef %371, i32 noundef %369)
  %373 = load i32, ptr %370, align 4, !tbaa !5
  %374 = shl i32 %372, 30
  %375 = add i32 %374, %373
  %376 = sub i32 %375, %369
  %377 = getelementptr inbounds i8, ptr %0, i64 16
  store i32 %376, ptr %377, align 4, !tbaa !5
  %378 = add i32 %272, %372
  %379 = getelementptr inbounds i8, ptr %2, i64 20
  %380 = load i32, ptr %379, align 4, !tbaa !5
  %381 = tail call i32 @lt_modm(i32 noundef %380, i32 noundef %378)
  %382 = load i32, ptr %379, align 4, !tbaa !5
  %383 = shl i32 %381, 30
  %384 = add i32 %383, %382
  %385 = sub i32 %384, %378
  %386 = getelementptr inbounds i8, ptr %0, i64 20
  store i32 %385, ptr %386, align 4, !tbaa !5
  %387 = add i32 %291, %381
  %388 = getelementptr inbounds i8, ptr %2, i64 24
  %389 = load i32, ptr %388, align 4, !tbaa !5
  %390 = tail call i32 @lt_modm(i32 noundef %389, i32 noundef %387)
  %391 = load i32, ptr %388, align 4, !tbaa !5
  %392 = shl i32 %390, 30
  %393 = add i32 %392, %391
  %394 = sub i32 %393, %387
  %395 = getelementptr inbounds i8, ptr %0, i64 24
  store i32 %394, ptr %395, align 4, !tbaa !5
  %396 = add i32 %312, %390
  %397 = getelementptr inbounds i8, ptr %2, i64 28
  %398 = load i32, ptr %397, align 4, !tbaa !5
  %399 = tail call i32 @lt_modm(i32 noundef %398, i32 noundef %396)
  %400 = load i32, ptr %397, align 4, !tbaa !5
  %401 = shl i32 %399, 30
  %402 = add i32 %401, %400
  %403 = sub i32 %402, %396
  %404 = getelementptr inbounds i8, ptr %0, i64 28
  store i32 %403, ptr %404, align 4, !tbaa !5
  %405 = add i32 %335, %399
  %406 = getelementptr inbounds i8, ptr %2, i64 32
  %407 = load i32, ptr %406, align 4, !tbaa !5
  %408 = tail call i32 @lt_modm(i32 noundef %407, i32 noundef %405)
  %409 = load i32, ptr %406, align 4, !tbaa !5
  %410 = sub i32 %409, %405
  %411 = shl i32 %408, 24
  %412 = add i32 %410, %411
  %413 = getelementptr inbounds i8, ptr %0, i64 32
  store i32 %412, ptr %413, align 4, !tbaa !5
  tail call void @reduce256_modm(ptr noundef nonnull %0)
  tail call void @reduce256_modm(ptr noundef nonnull %0)
  ret void
}

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }

!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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,TailCallElimPass