Skip to content

Instantly share code, notes, and snippets.

@shekohex
Last active August 20, 2024 14:20
Show Gist options
  • Save shekohex/85159017450974c1551f13c459621e0d to your computer and use it in GitHub Desktop.
Save shekohex/85159017450974c1551f13c459621e0d to your computer and use it in GitHub Desktop.
A Simple HashX program in LLVM IR
; ModuleID = 'hashx_module'
source_filename = "hashx_module"
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite)
define void @compute(ptr %0) local_unnamed_addr #0 {
entry:
%const3463 = bitcast i64 -489410267 to i64
%const3447 = bitcast i64 -1543264299 to i64
%const3440 = bitcast i64 -2121149370 to i64
%const3421 = bitcast i64 1017342550 to i64
%dst_ptr = getelementptr i64, ptr %0, i64 4
%dst_val = load i64, ptr %dst_ptr, align 8
%src_val = load i64, ptr %0, align 8
%mul_result = mul i64 %src_val, %dst_val
store i64 %mul_result, ptr %dst_ptr, align 8
%dst_ptr29.phi.trans.insert = getelementptr i64, ptr %0, i64 5
%dst_val31.pre = load i64, ptr %dst_ptr29.phi.trans.insert, align 8
%dst_ptr2 = getelementptr i64, ptr %0, i64 2
%dst_ptr16 = getelementptr i64, ptr %0, i64 6
%src_ptr17 = getelementptr i64, ptr %0, i64 7
%dst_ptr26 = getelementptr i64, ptr %0, i64 3
%dst_ptr43 = getelementptr i64, ptr %0, i64 1
%1 = load <2 x i64>, ptr %dst_ptr2, align 8
%dst_val43256.peel = extractelement <2 x i64> %1, i64 0
%2 = load <2 x i64>, ptr %dst_ptr16, align 8
%dst_val183258.peel = extractelement <2 x i64> %2, i64 0
%src_val53259.peel = extractelement <2 x i64> %2, i64 1
%mul_result6.peel = mul i64 %src_val53259.peel, %dst_val43256.peel
store i64 %mul_result6.peel, ptr %dst_ptr2, align 8
%3 = load <2 x i64>, ptr %0, align 8
%dst_val143255.peel = extractelement <2 x i64> %3, i64 1
%shift.peel = shufflevector <2 x i64> %1, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%4 = xor <2 x i64> %3, %shift.peel
%xor_result.peel = extractelement <2 x i64> %4, i64 0
%add_const_result.peel = add i64 %dst_val143255.peel, %const3447
%mul_result20.peel = mul i64 %src_val53259.peel, %dst_val183258.peel
store i64 %mul_result20.peel, ptr %dst_ptr16, align 8
%add_const_result24.peel = add i64 %xor_result.peel, %const3421
%5 = extractelement <2 x i64> %1, i64 1
%rotated.peel = tail call i64 @llvm.fshl.i64(i64 %5, i64 %5, i64 55)
store i64 %rotated.peel, ptr %dst_ptr26, align 8
%6 = load <2 x i64>, ptr %dst_ptr2, align 8
%src_val473262.peel = extractelement <2 x i64> %6, i64 0
%src_val323263.peel = extractelement <2 x i64> %6, i64 1
%mul_result33.peel = mul i64 %src_val323263.peel, %dst_val31.pre
%add_const_result37.peel = add i64 %src_val53259.peel, %const3463
store i64 %add_const_result37.peel, ptr %src_ptr17, align 8
%shifted.peel = shl i64 %src_val323263.peel, 1
%add_shift_result.peel = add i64 %shifted.peel, %add_const_result.peel
%dst_val_128.peel = sext i64 %src_val473262.peel to i128
%mul_result_128.peel = mul nsw i128 %dst_val_128.peel, %dst_val_128.peel
%smulh_result.peel = lshr i128 %mul_result_128.peel, 64
%smulh_result_64.peel = trunc i128 %smulh_result.peel to i64
%7 = insertelement <2 x i64> poison, i64 %add_shift_result.peel, i64 0
%8 = insertelement <2 x i64> %7, i64 %smulh_result_64.peel, i64 1
store <2 x i64> %8, ptr %dst_ptr43, align 8
%add_const_result51.peel = add i64 %src_val323263.peel, %const3440
store i64 %add_const_result51.peel, ptr %dst_ptr26, align 8
%mul_result57.peel = mul i64 %add_shift_result.peel, %add_const_result24.peel
%xor_result63.peel = xor i64 %add_shift_result.peel, %mul_result20.peel
%9 = insertelement <2 x i64> poison, i64 %mul_result57.peel, i64 0
%10 = insertelement <2 x i64> %9, i64 %xor_result63.peel, i64 1
store <2 x i64> %10, ptr %0, align 8
%11 = load <2 x i64>, ptr %dst_ptr26, align 8
%shift3353.peel = shufflevector <2 x i64> %11, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%12 = sub <2 x i64> %11, %shift3353.peel
%sub_result.peel = extractelement <2 x i64> %12, i64 0
store i64 %sub_result.peel, ptr %dst_ptr26, align 8
%mul_result74.peel = mul i64 %sub_result.peel, %xor_result63.peel
store i64 %mul_result74.peel, ptr %dst_ptr43, align 8
%13 = and i128 %mul_result_128.peel, 2477108189004211836906635264
%branch_condition.peel.not = icmp eq i128 %13, 0
br i1 %branch_condition.peel.not, label %continue_17.loopexit, label %continue_17
continue_17.loopexit: ; preds = %entry
%sunkaddr = getelementptr i8, ptr %0, i64 16
%14 = load <2 x i64>, ptr %sunkaddr, align 8
%dst_val43256 = extractelement <2 x i64> %14, i64 0
%sunkaddr3469 = getelementptr i8, ptr %0, i64 48
%15 = load <2 x i64>, ptr %sunkaddr3469, align 8
%dst_val183258 = extractelement <2 x i64> %15, i64 0
%src_val53259 = extractelement <2 x i64> %15, i64 1
%mul_result6 = mul i64 %src_val53259, %dst_val43256
store i64 %mul_result6, ptr %sunkaddr, align 8
%16 = load <2 x i64>, ptr %0, align 8
%dst_val143255 = extractelement <2 x i64> %16, i64 1
%shift = shufflevector <2 x i64> %14, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%17 = xor <2 x i64> %16, %shift
%xor_result = extractelement <2 x i64> %17, i64 0
%add_const_result = add i64 %dst_val143255, %const3447
%mul_result20 = mul i64 %src_val53259, %dst_val183258
store i64 %mul_result20, ptr %sunkaddr3469, align 8
%add_const_result24 = add i64 %xor_result, %const3421
%18 = extractelement <2 x i64> %14, i64 1
%rotated = tail call i64 @llvm.fshl.i64(i64 %18, i64 %18, i64 55)
%sunkaddr3470 = getelementptr i8, ptr %0, i64 24
store i64 %rotated, ptr %sunkaddr3470, align 8
%19 = load <2 x i64>, ptr %sunkaddr, align 8
%src_val473262 = extractelement <2 x i64> %19, i64 0
%src_val323263 = extractelement <2 x i64> %19, i64 1
%add_const_result37 = add i64 %src_val53259, %const3463
%sunkaddr3471 = getelementptr i8, ptr %0, i64 56
store i64 %add_const_result37, ptr %sunkaddr3471, align 8
%shifted = shl i64 %src_val323263, 1
%add_shift_result = add i64 %shifted, %add_const_result
%dst_val_128 = sext i64 %src_val473262 to i128
%mul_result_128 = mul nsw i128 %dst_val_128, %dst_val_128
%smulh_result = lshr i128 %mul_result_128, 64
%smulh_result_64 = trunc i128 %smulh_result to i64
%20 = insertelement <2 x i64> poison, i64 %add_shift_result, i64 0
%21 = insertelement <2 x i64> %20, i64 %smulh_result_64, i64 1
%sunkaddr3472 = getelementptr i8, ptr %0, i64 8
store <2 x i64> %21, ptr %sunkaddr3472, align 8
%add_const_result51 = add i64 %src_val323263, %const3440
store i64 %add_const_result51, ptr %sunkaddr3470, align 8
%mul_result57 = mul i64 %add_shift_result, %add_const_result24
%xor_result63 = xor i64 %add_shift_result, %mul_result20
%22 = load <2 x i64>, ptr %sunkaddr3470, align 8
%shift3353 = shufflevector <2 x i64> %22, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%23 = sub <2 x i64> %22, %shift3353
%sub_result = extractelement <2 x i64> %23, i64 0
store i64 %sub_result, ptr %sunkaddr3470, align 8
%mul_result74 = mul i64 %sub_result, %xor_result63
store i64 %mul_result74, ptr %sunkaddr3472, align 8
%mul_result33 = mul i64 %src_val323263, %mul_result33.peel
br label %continue_17
continue_17: ; preds = %continue_17.loopexit, %entry
%mul_result33.lcssa = phi i64 [ %mul_result33.peel, %entry ], [ %mul_result33, %continue_17.loopexit ]
%mul_result57.lcssa = phi i64 [ %mul_result57.peel, %entry ], [ %mul_result57, %continue_17.loopexit ]
%24 = icmp eq i128 %13, 0
%const3456 = bitcast i64 -749652318 to i64
%const3442 = bitcast i64 -1917086674 to i64
%const3423 = bitcast i64 1140647611 to i64
%const3407 = bitcast i64 191301244 to i64
%sunkaddr3473 = getelementptr i8, ptr %0, i64 40
store i64 %mul_result33.lcssa, ptr %sunkaddr3473, align 8
%sunkaddr3474 = getelementptr i8, ptr %0, i64 16
%25 = load <2 x i64>, ptr %sunkaddr3474, align 8
%src_val973238 = extractelement <2 x i64> %25, i64 0
%dst_val803239 = extractelement <2 x i64> %25, i64 1
%sunkaddr3475 = getelementptr i8, ptr %0, i64 32
%26 = load <2 x i64>, ptr %sunkaddr3475, align 8
%dst_val1073240 = extractelement <2 x i64> %26, i64 0
%src_val813241 = extractelement <2 x i64> %26, i64 1
%mul_result82 = mul i64 %src_val813241, %dst_val803239
%sunkaddr3476 = getelementptr i8, ptr %0, i64 24
store i64 %mul_result82, ptr %sunkaddr3476, align 8
%sunkaddr3477 = getelementptr i8, ptr %0, i64 48
%27 = load <2 x i64>, ptr %sunkaddr3477, align 8
%28 = shufflevector <2 x i64> %26, <2 x i64> <i64 -805548795, i64 poison>, <2 x i32> <i32 2, i32 0>
%29 = add <2 x i64> %27, %28
%30 = sub <2 x i64> %27, %28
%31 = shufflevector <2 x i64> %29, <2 x i64> %30, <2 x i32> <i32 0, i32 3>
store <2 x i64> %31, ptr %sunkaddr3477, align 8
%dst_val_12898 = sext i64 %mul_result57.lcssa to i128
%src_val_12899 = sext i64 %src_val973238 to i128
%mul_result_128100 = mul nsw i128 %src_val_12899, %dst_val_12898
%smulh_result101 = lshr i128 %mul_result_128100, 64
%smulh_result_64102 = trunc i128 %smulh_result101 to i64
store i64 %smulh_result_64102, ptr %0, align 8
%32 = load <2 x i64>, ptr %sunkaddr3473, align 8
%dst_val1193246 = extractelement <2 x i64> %32, i64 0
%src_val1083247 = extractelement <2 x i64> %32, i64 1
%shifted109 = shl i64 %src_val1083247, 3
%add_shift_result110 = add i64 %shifted109, %dst_val1073240
%sunkaddr3478 = getelementptr i8, ptr %0, i64 8
%33 = load <2 x i64>, ptr %sunkaddr3478, align 8
%src_val1153244 = extractelement <2 x i64> %33, i64 0
%dst_val1223245 = extractelement <2 x i64> %33, i64 1
%mul_result116 = mul i64 %src_val1153244, %src_val1083247
%xor_const_result = xor i64 %dst_val1193246, 792944640
%34 = insertelement <2 x i64> poison, i64 %add_shift_result110, i64 0
%35 = insertelement <2 x i64> %34, i64 %xor_const_result, i64 1
store <2 x i64> %35, ptr %sunkaddr3475, align 8
%add_const_result123 = add i64 %dst_val1223245, 1811215523
store i64 %add_const_result123, ptr %sunkaddr3474, align 8
%36 = load <2 x i64>, ptr %sunkaddr3478, align 8
%dst_val1333248 = extractelement <2 x i64> %36, i64 0
%dst_val1273249 = extractelement <2 x i64> %36, i64 1
%mul_result129 = mul i64 %dst_val1273249, %xor_const_result
%sub_result135 = sub i64 %dst_val1333248, %add_shift_result110
%37 = insertelement <2 x i64> poison, i64 %sub_result135, i64 0
%38 = insertelement <2 x i64> %37, i64 %mul_result129, i64 1
store <2 x i64> %38, ptr %sunkaddr3478, align 8
%xor_const_result139 = xor i64 %add_shift_result110, 1683839876
store i64 %xor_const_result139, ptr %sunkaddr3475, align 8
%39 = load <2 x i64>, ptr %sunkaddr3476, align 8
%dst_val1533252 = extractelement <2 x i64> %39, i64 0
%dst_val1433253 = extractelement <2 x i64> %39, i64 1
%mul_result145 = mul i64 %dst_val1433253, %xor_const_result
%add_const_result149 = add i64 %xor_const_result, 841729202
%40 = extractelement <2 x i64> %30, i64 1
%xor_result155 = xor i64 %dst_val1533252, %40
%mul_result161 = mul i64 %40, %smulh_result_64102
%sunkaddr3479 = getelementptr i8, ptr %0, i64 56
store i64 %mul_result161, ptr %sunkaddr3479, align 8
%41 = load <2 x i64>, ptr %0, align 8
%dst_val1743230.peel = extractelement <2 x i64> %41, i64 0
%src_val1663231.peel = extractelement <2 x i64> %41, i64 1
%mul_result167.peel = mul i64 %src_val1663231.peel, %xor_result155
%add_const_result171.peel = add i64 %src_val1663231.peel, %const3456
%rotated177.peel = tail call i64 @llvm.fshl.i64(i64 %dst_val1743230.peel, i64 %dst_val1743230.peel, i64 63)
%42 = insertelement <2 x i64> poison, i64 %rotated177.peel, i64 0
%43 = insertelement <2 x i64> %42, i64 %add_const_result171.peel, i64 1
store <2 x i64> %43, ptr %0, align 8
%mul_result183.peel = mul i64 %add_const_result171.peel, %add_const_result149
%44 = load <2 x i64>, ptr %sunkaddr3478, align 8
%src_val1883234.peel = extractelement <2 x i64> %44, i64 0
%dst_val1873235.peel = extractelement <2 x i64> %44, i64 1
%shifted189.peel = shl i64 %src_val1883234.peel, 2
%add_shift_result190.peel = add i64 %shifted189.peel, %dst_val1873235.peel
%add_const_result194.peel = add i64 %rotated177.peel, %const3442
%mul_result200.peel = mul i64 %add_shift_result190.peel, %mul_result145
store i64 %mul_result200.peel, ptr %sunkaddr3474, align 8
%add_const_result204.peel = add i64 %mul_result145, 1761681841
%xor_result210.peel = xor i64 %add_const_result194.peel, %mul_result116
store i64 %xor_result210.peel, ptr %sunkaddr3477, align 8
%45 = load <2 x i64>, ptr %sunkaddr3477, align 8
%dst_val2143236.peel = extractelement <2 x i64> %45, i64 0
%dst_val2243237.peel = extractelement <2 x i64> %45, i64 1
%dst_val_128216.peel = sext i64 %dst_val2143236.peel to i128
%src_val_128217.peel = sext i64 %add_const_result204.peel to i128
%mul_result_128218.peel = mul nsw i128 %dst_val_128216.peel, %src_val_128217.peel
%smulh_result219.peel = lshr i128 %mul_result_128218.peel, 64
%smulh_result_64220.peel = trunc i128 %smulh_result219.peel to i64
%xor_const_result225.peel = xor i64 %dst_val2243237.peel, %const3407
%46 = insertelement <2 x i64> poison, i64 %smulh_result_64220.peel, i64 0
%47 = insertelement <2 x i64> %46, i64 %xor_const_result225.peel, i64 1
store <2 x i64> %47, ptr %sunkaddr3477, align 8
%mul_result231.peel = mul i64 %xor_const_result225.peel, %src_val1883234.peel
store i64 %mul_result231.peel, ptr %sunkaddr3478, align 8
%add_const_result235.peel = add i64 %mul_result183.peel, %const3423
%rotated241.peel = tail call i64 @llvm.fshl.i64(i64 %add_const_result194.peel, i64 %add_const_result194.peel, i64 26)
store i64 %rotated241.peel, ptr %0, align 8
%mul_result247.peel = mul i64 %xor_const_result225.peel, %add_const_result235.peel
store i64 %mul_result247.peel, ptr %sunkaddr3479, align 8
%48 = and i128 %mul_result_128218.peel, 9908357493301026612655947776
%branch_condition253.peel = icmp ne i128 %48, 0
%or.cond3338.not.peel = select i1 %24, i1 true, i1 %branch_condition253.peel
br i1 %or.cond3338.not.peel, label %continue_49, label %continue_49.loopexit
continue_49.loopexit: ; preds = %continue_17
%49 = load <2 x i64>, ptr %0, align 8
%dst_val1743230 = extractelement <2 x i64> %49, i64 0
%src_val1663231 = extractelement <2 x i64> %49, i64 1
%add_const_result171 = add i64 %src_val1663231, %const3456
%rotated177 = tail call i64 @llvm.fshl.i64(i64 %dst_val1743230, i64 %dst_val1743230, i64 63)
%50 = insertelement <2 x i64> poison, i64 %rotated177, i64 0
%51 = insertelement <2 x i64> %50, i64 %add_const_result171, i64 1
store <2 x i64> %51, ptr %0, align 8
%mul_result183 = mul i64 %add_const_result171, %add_const_result235.peel
%sunkaddr3480 = getelementptr i8, ptr %0, i64 8
%52 = load <2 x i64>, ptr %sunkaddr3480, align 8
%src_val1883234 = extractelement <2 x i64> %52, i64 0
%dst_val1873235 = extractelement <2 x i64> %52, i64 1
%shifted189 = shl i64 %src_val1883234, 2
%add_shift_result190 = add i64 %shifted189, %dst_val1873235
%add_const_result194 = add i64 %rotated177, %const3442
%mul_result200 = mul i64 %add_shift_result190, %add_const_result204.peel
%add_const_result204 = add i64 %mul_result145, 3523363682
%xor_result210 = xor i64 %add_const_result194, %smulh_result_64220.peel
%sunkaddr3481 = getelementptr i8, ptr %0, i64 48
store i64 %xor_result210, ptr %sunkaddr3481, align 8
%53 = load <2 x i64>, ptr %sunkaddr3481, align 8
%dst_val2143236 = extractelement <2 x i64> %53, i64 0
%dst_val2243237 = extractelement <2 x i64> %53, i64 1
%dst_val_128216 = sext i64 %dst_val2143236 to i128
%src_val_128217 = sext i64 %add_const_result204 to i128
%mul_result_128218 = mul nsw i128 %dst_val_128216, %src_val_128217
%smulh_result219 = lshr i128 %mul_result_128218, 64
%smulh_result_64220 = trunc i128 %smulh_result219 to i64
%xor_const_result225 = xor i64 %dst_val2243237, %const3407
%mul_result231 = mul i64 %xor_const_result225, %src_val1883234
store i64 %mul_result231, ptr %sunkaddr3480, align 8
%add_const_result235 = add i64 %mul_result183, %const3423
%rotated241 = tail call i64 @llvm.fshl.i64(i64 %add_const_result194, i64 %add_const_result194, i64 26)
%mul_result247 = mul i64 %xor_const_result225, %add_const_result235
%sunkaddr3482 = getelementptr i8, ptr %0, i64 56
store i64 %mul_result247, ptr %sunkaddr3482, align 8
%mul_result167 = mul i64 %src_val1663231, %mul_result167.peel
br label %continue_49
continue_49: ; preds = %continue_49.loopexit, %continue_17
%branch_taken249.lcssa = phi i1 [ %branch_condition.peel.not, %continue_17 ], [ true, %continue_49.loopexit ]
%mul_result167.lcssa = phi i64 [ %mul_result167.peel, %continue_17 ], [ %mul_result167, %continue_49.loopexit ]
%mul_result200.lcssa = phi i64 [ %mul_result200.peel, %continue_17 ], [ %mul_result200, %continue_49.loopexit ]
%add_const_result204.lcssa = phi i64 [ %add_const_result204.peel, %continue_17 ], [ %add_const_result204, %continue_49.loopexit ]
%smulh_result_64220.lcssa = phi i64 [ %smulh_result_64220.peel, %continue_17 ], [ %smulh_result_64220, %continue_49.loopexit ]
%add_const_result235.lcssa = phi i64 [ %add_const_result235.peel, %continue_17 ], [ %add_const_result235, %continue_49.loopexit ]
%rotated241.lcssa = phi i64 [ %rotated241.peel, %continue_17 ], [ %rotated241, %continue_49.loopexit ]
%mul_result247.lcssa = phi i64 [ %mul_result247.peel, %continue_17 ], [ %mul_result247, %continue_49.loopexit ]
%const3466 = bitcast i64 -378865469 to i64
%const3424 = bitcast i64 1195268614 to i64
%const3409 = bitcast i64 259919979 to i64
%const3408 = bitcast i64 216087720 to i64
%sunkaddr3483 = getelementptr i8, ptr %0, i64 24
store i64 %mul_result167.lcssa, ptr %sunkaddr3483, align 8
%sunkaddr3484 = getelementptr i8, ptr %0, i64 40
store i64 %add_const_result235.lcssa, ptr %sunkaddr3484, align 8
%sunkaddr3485 = getelementptr i8, ptr %0, i64 32
store i64 %add_const_result204.lcssa, ptr %sunkaddr3485, align 8
%54 = load <2 x i64>, ptr %sunkaddr3485, align 8
%dst_val2563220 = extractelement <2 x i64> %54, i64 0
%src_val2573221 = extractelement <2 x i64> %54, i64 1
%mul_result258 = mul i64 %dst_val2563220, %src_val2573221
%rotated264 = tail call i64 @llvm.fshl.i64(i64 %src_val2573221, i64 %src_val2573221, i64 47)
%55 = insertelement <2 x i64> poison, i64 %mul_result258, i64 0
%56 = insertelement <2 x i64> %55, i64 %rotated264, i64 1
store <2 x i64> %56, ptr %sunkaddr3485, align 8
%xor_const_result268 = xor i64 %rotated241.lcssa, -1980587182
store i64 %xor_const_result268, ptr %0, align 8
%dst_val_128274 = zext i64 %rotated264 to i128
%src_val_128275 = zext i64 %xor_const_result268 to i128
%mul_result_128276 = mul nuw i128 %dst_val_128274, %src_val_128275
%umulh_result = lshr i128 %mul_result_128276, 64
%umulh_result_64 = trunc i128 %umulh_result to i64
store i64 %umulh_result_64, ptr %sunkaddr3484, align 8
%rotated283 = tail call i64 @llvm.fshl.i64(i64 %mul_result200.lcssa, i64 %mul_result200.lcssa, i64 18)
%sunkaddr3486 = getelementptr i8, ptr %0, i64 16
store i64 %rotated283, ptr %sunkaddr3486, align 8
%57 = load <2 x i64>, ptr %sunkaddr3486, align 8
%dst_val2873222 = extractelement <2 x i64> %57, i64 0
%dst_val2923223 = extractelement <2 x i64> %57, i64 1
%mul_result289 = mul i64 %dst_val2873222, %xor_const_result268
%add_const_result293 = add i64 %dst_val2923223, -2007366387
%58 = insertelement <2 x i64> poison, i64 %mul_result289, i64 0
%59 = insertelement <2 x i64> %58, i64 %add_const_result293, i64 1
store <2 x i64> %59, ptr %sunkaddr3486, align 8
%xor_const_result297 = xor i64 %smulh_result_64220.lcssa, 1311556357
%mul_result303 = mul i64 %xor_const_result297, %xor_const_result268
%sunkaddr3487 = getelementptr i8, ptr %0, i64 48
store i64 %mul_result303, ptr %sunkaddr3487, align 8
%60 = load <2 x i64>, ptr %0, align 8
%dst_val3073225 = extractelement <2 x i64> %60, i64 1
%61 = load <2 x i64>, ptr %sunkaddr3483, align 8
%src_val3083226 = extractelement <2 x i64> %61, i64 0
%shifted309 = shl i64 %src_val3083226, 1
%add_shift_result310 = add i64 %shifted309, %dst_val3073225
%sunkaddr3488 = getelementptr i8, ptr %0, i64 8
store i64 %add_shift_result310, ptr %sunkaddr3488, align 8
%shift3354 = shufflevector <2 x i64> %61, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%62 = xor <2 x i64> %shift3354, %60
%xor_result316 = extractelement <2 x i64> %62, i64 0
%63 = load <2 x i64>, ptr %0, align 8
%dst_val3253228 = extractelement <2 x i64> %63, i64 0
%dst_val3203229 = extractelement <2 x i64> %63, i64 1
%mul_result322 = mul i64 %dst_val3203229, %dst_val3253228
%add_const_result326 = add i64 %dst_val3253228, -279112105
%64 = insertelement <2 x i64> poison, i64 %add_const_result326, i64 0
%65 = insertelement <2 x i64> %64, i64 %mul_result322, i64 1
store <2 x i64> %65, ptr %0, align 8
%xor_const_result330 = xor i64 %xor_result316, 1537271434
store i64 %xor_const_result330, ptr %sunkaddr3485, align 8
%mul_result336 = mul i64 %add_const_result326, %mul_result247.lcssa
store i64 %mul_result336, ptr %0, align 8
%.pre = load <2 x i64>, ptr %sunkaddr3488, align 8
%66 = load <2 x i64>, ptr %sunkaddr3483, align 8
%dst_val3403202.peel = extractelement <2 x i64> %66, i64 0
%src_val3413203.peel = extractelement <2 x i64> %66, i64 1
%mul_result342.peel = mul i64 %dst_val3403202.peel, %src_val3413203.peel
%67 = load <2 x i64>, ptr %sunkaddr3485, align 8
%dst_val3463204.peel = extractelement <2 x i64> %67, i64 0
%dst_val3523205.peel = extractelement <2 x i64> %67, i64 1
%shifted348.peel = shl i64 %mul_result303, 2
%add_shift_result349.peel = add i64 %dst_val3463204.peel, %shifted348.peel
%68 = insertelement <2 x i64> poison, i64 %mul_result342.peel, i64 0
%69 = insertelement <2 x i64> %68, i64 %add_shift_result349.peel, i64 1
store <2 x i64> %69, ptr %sunkaddr3483, align 8
%xor_const_result353.peel = xor i64 %dst_val3523205.peel, %const3466
store i64 %xor_const_result353.peel, ptr %sunkaddr3484, align 8
%70 = load <2 x i64>, ptr %sunkaddr3485, align 8
%src_val3583206.peel = extractelement <2 x i64> %70, i64 0
%dst_val3573207.peel = extractelement <2 x i64> %70, i64 1
%mul_result359.peel = mul i64 %dst_val3573207.peel, %src_val3583206.peel
%71 = load <2 x i64>, ptr %sunkaddr3487, align 8
%dst_val3693208.peel = extractelement <2 x i64> %71, i64 0
%dst_val3633209.peel = extractelement <2 x i64> %71, i64 1
%add_shift_result366.peel = add i64 %dst_val3633209.peel, %mul_result322
%xor_const_result370.peel = xor i64 %dst_val3693208.peel, %const3409
%72 = insertelement <2 x i64> poison, i64 %mul_result359.peel, i64 0
%73 = insertelement <2 x i64> %72, i64 %xor_const_result370.peel, i64 1
store <2 x i64> %73, ptr %sunkaddr3484, align 8
%74 = load <2 x i64>, ptr %0, align 8
%dst_val3853210.peel = extractelement <2 x i64> %74, i64 0
%src_val3753211.peel = extractelement <2 x i64> %74, i64 1
%mul_result376.peel = mul i64 %src_val3753211.peel, %xor_const_result370.peel
store i64 %mul_result376.peel, ptr %sunkaddr3487, align 8
%dst_val4013212.peel = extractelement <2 x i64> %.pre, i64 0
%dst_val3803213.peel = extractelement <2 x i64> %.pre, i64 1
%xor_result382.peel = xor i64 %dst_val3853210.peel, %dst_val3803213.peel
%xor_const_result386.peel = xor i64 %dst_val3853210.peel, %const3424
%dst_val_128392.peel = zext i64 %mul_result342.peel to i128
%src_val_128393.peel = zext i64 %add_shift_result366.peel to i128
%mul_result_128394.peel = mul nuw i128 %src_val_128393.peel, %dst_val_128392.peel
%umulh_result395.peel = lshr i128 %mul_result_128394.peel, 64
%umulh_result_64396.peel = trunc i128 %umulh_result395.peel to i64
%75 = insertelement <2 x i64> poison, i64 %xor_result382.peel, i64 0
%76 = insertelement <2 x i64> %75, i64 %umulh_result_64396.peel, i64 1
store <2 x i64> %76, ptr %sunkaddr3486, align 8
%shifted403.peel = shl i64 %add_shift_result349.peel, 2
%add_shift_result404.peel = add i64 %shifted403.peel, %dst_val4013212.peel
%77 = insertelement <2 x i64> poison, i64 %xor_const_result386.peel, i64 0
%78 = insertelement <2 x i64> %77, i64 %add_shift_result404.peel, i64 1
store <2 x i64> %78, ptr %0, align 8
%mul_result410.peel = mul i64 %add_shift_result366.peel, %mul_result359.peel
%sunkaddr3489 = getelementptr i8, ptr %0, i64 56
store i64 %mul_result410.peel, ptr %sunkaddr3489, align 8
%xor_const_result414.peel = xor i64 %xor_result382.peel, 990371638
%add_const_result418.peel = add i64 %add_shift_result404.peel, %const3408
%79 = insertelement <2 x i64> poison, i64 %add_const_result418.peel, i64 0
%80 = insertelement <2 x i64> %79, i64 %xor_const_result414.peel, i64 1
store <2 x i64> %80, ptr %sunkaddr3488, align 8
%mul_result424.peel = mul i64 %xor_const_result386.peel, %src_val3583206.peel
store i64 %mul_result424.peel, ptr %sunkaddr3485, align 8
%81 = and i128 %mul_result_128394.peel, 34001038676661445538611200
%branch_condition430.peel = icmp ne i128 %81, 0
%or.cond3339.not.peel = select i1 %branch_taken249.lcssa, i1 true, i1 %branch_condition430.peel
br i1 %or.cond3339.not.peel, label %continue_81, label %continue_81.loopexit
continue_81.loopexit: ; preds = %continue_49
%sunkaddr3490 = getelementptr i8, ptr %0, i64 24
%82 = load <2 x i64>, ptr %sunkaddr3490, align 8
%dst_val3403202 = extractelement <2 x i64> %82, i64 0
%src_val3413203 = extractelement <2 x i64> %82, i64 1
%mul_result342 = mul i64 %dst_val3403202, %src_val3413203
%sunkaddr3491 = getelementptr i8, ptr %0, i64 32
%83 = load <2 x i64>, ptr %sunkaddr3491, align 8
%dst_val3463204 = extractelement <2 x i64> %83, i64 0
%dst_val3523205 = extractelement <2 x i64> %83, i64 1
%shifted348 = shl i64 %mul_result376.peel, 2
%add_shift_result349 = add i64 %dst_val3463204, %shifted348
%84 = insertelement <2 x i64> poison, i64 %mul_result342, i64 0
%85 = insertelement <2 x i64> %84, i64 %add_shift_result349, i64 1
store <2 x i64> %85, ptr %sunkaddr3490, align 8
%xor_const_result353 = xor i64 %dst_val3523205, %const3466
%sunkaddr3492 = getelementptr i8, ptr %0, i64 40
store i64 %xor_const_result353, ptr %sunkaddr3492, align 8
%86 = load <2 x i64>, ptr %sunkaddr3491, align 8
%src_val3583206 = extractelement <2 x i64> %86, i64 0
%dst_val3573207 = extractelement <2 x i64> %86, i64 1
%mul_result359 = mul i64 %dst_val3573207, %src_val3583206
%sunkaddr3493 = getelementptr i8, ptr %0, i64 48
%87 = load <2 x i64>, ptr %sunkaddr3493, align 8
%dst_val3693208 = extractelement <2 x i64> %87, i64 0
%dst_val3633209 = extractelement <2 x i64> %87, i64 1
%add_shift_result366 = add i64 %dst_val3633209, %add_const_result418.peel
%xor_const_result370 = xor i64 %dst_val3693208, %const3409
%88 = insertelement <2 x i64> poison, i64 %mul_result359, i64 0
%89 = insertelement <2 x i64> %88, i64 %xor_const_result370, i64 1
store <2 x i64> %89, ptr %sunkaddr3492, align 8
%90 = load <2 x i64>, ptr %0, align 8
%dst_val3853210 = extractelement <2 x i64> %90, i64 0
%src_val3753211 = extractelement <2 x i64> %90, i64 1
%mul_result376 = mul i64 %src_val3753211, %xor_const_result370
store i64 %mul_result376, ptr %sunkaddr3493, align 8
%xor_result382 = xor i64 %dst_val3853210, %xor_const_result414.peel
%xor_const_result386 = xor i64 %dst_val3853210, %const3424
%dst_val_128392 = zext i64 %mul_result342 to i128
%src_val_128393 = zext i64 %add_shift_result366 to i128
%mul_result_128394 = mul nuw i128 %src_val_128393, %dst_val_128392
%umulh_result395 = lshr i128 %mul_result_128394, 64
%umulh_result_64396 = trunc i128 %umulh_result395 to i64
%91 = insertelement <2 x i64> poison, i64 %xor_result382, i64 0
%92 = insertelement <2 x i64> %91, i64 %umulh_result_64396, i64 1
%sunkaddr3494 = getelementptr i8, ptr %0, i64 16
store <2 x i64> %92, ptr %sunkaddr3494, align 8
%shifted403 = shl i64 %add_shift_result349, 2
%add_shift_result404 = add i64 %shifted403, %add_const_result418.peel
%93 = insertelement <2 x i64> poison, i64 %xor_const_result386, i64 0
%94 = insertelement <2 x i64> %93, i64 %add_shift_result404, i64 1
store <2 x i64> %94, ptr %0, align 8
%mul_result410 = mul i64 %add_shift_result366, %mul_result359
%xor_const_result414 = xor i64 %dst_val3853210, %xor_result382.peel
%add_const_result418 = add i64 %add_shift_result404, %const3408
%95 = insertelement <2 x i64> poison, i64 %add_const_result418, i64 0
%96 = insertelement <2 x i64> %95, i64 %xor_const_result414, i64 1
%sunkaddr3495 = getelementptr i8, ptr %0, i64 8
store <2 x i64> %96, ptr %sunkaddr3495, align 8
%mul_result424 = mul i64 %xor_const_result386, %src_val3583206
store i64 %mul_result424, ptr %sunkaddr3491, align 8
br label %continue_81
continue_81: ; preds = %continue_81.loopexit, %continue_49
%branch_taken426.lcssa = phi i1 [ %branch_taken249.lcssa, %continue_49 ], [ true, %continue_81.loopexit ]
%mul_result410.lcssa = phi i64 [ %mul_result410.peel, %continue_49 ], [ %mul_result410, %continue_81.loopexit ]
%xor_const_result414.lcssa = phi i64 [ %xor_const_result414.peel, %continue_49 ], [ %xor_const_result414, %continue_81.loopexit ]
%add_const_result418.lcssa = phi i64 [ %add_const_result418.peel, %continue_49 ], [ %add_const_result418, %continue_81.loopexit ]
%const3467 = bitcast i64 -170722956 to i64
%const3455 = bitcast i64 -826735246 to i64
%const3453 = bitcast i64 -909583460 to i64
%const3441 = bitcast i64 -2017476240 to i64
%const3426 = bitcast i64 1265310346 to i64
%const3411 = bitcast i64 426795125 to i64
%97 = load <2 x i64>, ptr %0, align 8
%src_val4343187 = extractelement <2 x i64> %97, i64 1
%mul_result435 = mul i64 %src_val4343187, %xor_const_result414.lcssa
%sunkaddr3496 = getelementptr i8, ptr %0, i64 40
%98 = load <2 x i64>, ptr %sunkaddr3496, align 8
%src_val4443191 = extractelement <2 x i64> %98, i64 1
%shifted445 = shl i64 %src_val4443191, 1
%add_shift_result446 = add i64 %shifted445, %add_const_result418.lcssa
%dst_val_128452 = sext i64 %mul_result410.lcssa to i128
%mul_result_128454 = mul nsw i128 %dst_val_128452, %dst_val_128452
%smulh_result455 = lshr i128 %mul_result_128454, 64
%smulh_result_64456 = trunc i128 %smulh_result455 to i64
%sunkaddr3497 = getelementptr i8, ptr %0, i64 24
%99 = load <2 x i64>, ptr %sunkaddr3497, align 8
%src_val4663194 = extractelement <2 x i64> %99, i64 0
%mul_result467 = mul i64 %src_val4663194, %add_shift_result446
%sunkaddr3498 = getelementptr i8, ptr %0, i64 8
store i64 %mul_result467, ptr %sunkaddr3498, align 8
%100 = shufflevector <2 x i64> %97, <2 x i64> %98, <2 x i32> <i32 0, i32 2>
%101 = add <2 x i64> %100, <i64 95436354, i64 poison>
%102 = xor <2 x i64> %100, <i64 poison, i64 -215390260>
%103 = shufflevector <2 x i64> %101, <2 x i64> %102, <2 x i32> <i32 0, i32 3>
%104 = extractelement <2 x i64> %102, i64 1
store i64 %104, ptr %sunkaddr3496, align 8
%105 = shufflevector <2 x i64> %99, <2 x i64> <i64 poison, i64 1719963747>, <2 x i32> <i32 1, i32 3>
%106 = sub <2 x i64> %105, %103
%107 = add <2 x i64> %105, %103
%108 = shufflevector <2 x i64> %106, <2 x i64> %107, <2 x i32> <i32 0, i32 3>
%sunkaddr3499 = getelementptr i8, ptr %0, i64 32
store <2 x i64> %108, ptr %sunkaddr3499, align 8
%109 = extractelement <2 x i64> %106, i64 0
%110 = extractelement <2 x i64> %101, i64 0
%mul_result483 = mul i64 %109, %110
store i64 %mul_result483, ptr %0, align 8
%111 = extractelement <2 x i64> %107, i64 1
%sub_result489 = sub i64 %mul_result435, %111
%sunkaddr3500 = getelementptr i8, ptr %0, i64 16
store i64 %sub_result489, ptr %sunkaddr3500, align 8
%rotated495 = tail call i64 @llvm.fshl.i64(i64 %109, i64 %109, i64 9)
store i64 %rotated495, ptr %sunkaddr3499, align 8
%112 = load <2 x i64>, ptr %sunkaddr3499, align 8
%dst_val4993200 = extractelement <2 x i64> %112, i64 0
%dst_val5153201 = extractelement <2 x i64> %112, i64 1
%mul_result501 = mul i64 %dst_val4993200, %src_val4443191
store i64 %mul_result501, ptr %sunkaddr3499, align 8
%113 = load <2 x i64>, ptr %sunkaddr3500, align 8
%shift3355 = shufflevector <2 x i64> %113, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%114 = sub <2 x i64> %113, %shift3355
%sub_result507 = extractelement <2 x i64> %114, i64 0
store i64 %sub_result507, ptr %sunkaddr3500, align 8
%add_const_result511 = add i64 %src_val4443191, -523421234
%mul_result517 = mul i64 %sub_result507, %dst_val5153201
%115 = insertelement <2 x i64> poison, i64 %mul_result517, i64 0
%116 = insertelement <2 x i64> %115, i64 %add_const_result511, i64 1
store <2 x i64> %116, ptr %sunkaddr3496, align 8
%117 = load <2 x i64>, ptr %sunkaddr3498, align 8
%src_val5223175.peel = extractelement <2 x i64> %117, i64 1
%mul_result523.peel = mul i64 %src_val5223175.peel, %add_const_result511
%sunkaddr3501 = getelementptr i8, ptr %0, i64 48
store i64 %mul_result523.peel, ptr %sunkaddr3501, align 8
%118 = load <2 x i64>, ptr %sunkaddr3500, align 8
%dst_val5353177.peel = extractelement <2 x i64> %118, i64 1
%119 = shufflevector <2 x i64> %117, <2 x i64> %118, <2 x i32> <i32 0, i32 2>
%120 = xor <2 x i64> %119, <i64 -682693375, i64 poison>
%121 = add <2 x i64> %119, <i64 poison, i64 1226444073>
%122 = shufflevector <2 x i64> %120, <2 x i64> %121, <2 x i32> <i32 0, i32 3>
store <2 x i64> %122, ptr %sunkaddr3498, align 8
%123 = load <2 x i64>, ptr %0, align 8
%dst_val5443178.peel = extractelement <2 x i64> %123, i64 0
%src_val5363179.peel = extractelement <2 x i64> %123, i64 1
%mul_result537.peel = mul i64 %src_val5363179.peel, %dst_val5353177.peel
%add_const_result541.peel = add i64 %mul_result501, %const3426
%124 = insertelement <2 x i64> poison, i64 %mul_result537.peel, i64 0
%125 = insertelement <2 x i64> %124, i64 %add_const_result541.peel, i64 1
store <2 x i64> %125, ptr %sunkaddr3497, align 8
%xor_const_result545.peel = xor i64 %dst_val5443178.peel, %const3455
%126 = extractelement <2 x i64> %121, i64 1
%mul_result551.peel = mul i64 %xor_const_result545.peel, %126
store i64 %mul_result551.peel, ptr %0, align 8
%127 = load <2 x i64>, ptr %sunkaddr3499, align 8
%dst_val5543180.peel = extractelement <2 x i64> %127, i64 0
%dst_val5653181.peel = extractelement <2 x i64> %127, i64 1
%xor_const_result555.peel = xor i64 %dst_val5543180.peel, %const3411
%rotated561.peel = tail call i64 @llvm.fshl.i64(i64 %126, i64 %126, i64 26)
store i64 %rotated561.peel, ptr %sunkaddr3500, align 8
%128 = load <2 x i64>, ptr %sunkaddr3498, align 8
%src_val5813182.peel = extractelement <2 x i64> %128, i64 0
%src_val5663183.peel = extractelement <2 x i64> %128, i64 1
%dst_val_128567.peel = zext i64 %dst_val5653181.peel to i128
%src_val_128568.peel = zext i64 %src_val5663183.peel to i128
%mul_result_128569.peel = mul nuw i128 %src_val_128568.peel, %dst_val_128567.peel
%umulh_result570.peel = lshr i128 %mul_result_128569.peel, 64
%umulh_result_64571.peel = trunc i128 %umulh_result570.peel to i64
store i64 %umulh_result_64571.peel, ptr %sunkaddr3496, align 8
%xor_const_result576.peel = xor i64 %smulh_result_64456, %const3441
%mul_result582.peel = mul i64 %src_val5813182.peel, %xor_const_result555.peel
store i64 %mul_result582.peel, ptr %sunkaddr3499, align 8
%xor_const_result586.peel = xor i64 %src_val5663183.peel, %const3453
store i64 %xor_const_result586.peel, ptr %sunkaddr3500, align 8
%add_const_result590.peel = add i64 %xor_const_result576.peel, %const3467
%sunkaddr3502 = getelementptr i8, ptr %0, i64 56
store i64 %add_const_result590.peel, ptr %sunkaddr3502, align 8
%129 = load <2 x i64>, ptr %sunkaddr3501, align 8
%src_val5953184.peel = extractelement <2 x i64> %129, i64 0
%dst_val5943185.peel = extractelement <2 x i64> %129, i64 1
%mul_result596.peel = mul i64 %dst_val5943185.peel, %src_val5953184.peel
store i64 %mul_result596.peel, ptr %sunkaddr3502, align 8
%130 = and i128 %mul_result_128569.peel, 20428428573634980089023168512
%branch_condition602.peel = icmp ne i128 %130, 0
%or.cond3340.not.peel = select i1 %branch_taken426.lcssa, i1 true, i1 %branch_condition602.peel
br i1 %or.cond3340.not.peel, label %continue_113, label %continue_113.loopexit
continue_113.loopexit: ; preds = %continue_81
%sunkaddr3503 = getelementptr i8, ptr %0, i64 8
%131 = load <2 x i64>, ptr %sunkaddr3503, align 8
%src_val5223175 = extractelement <2 x i64> %131, i64 1
%mul_result523 = mul i64 %src_val5223175, %src_val5953184.peel
%sunkaddr3504 = getelementptr i8, ptr %0, i64 48
store i64 %mul_result523, ptr %sunkaddr3504, align 8
%sunkaddr3505 = getelementptr i8, ptr %0, i64 16
%132 = load <2 x i64>, ptr %sunkaddr3505, align 8
%dst_val5353177 = extractelement <2 x i64> %132, i64 1
%133 = shufflevector <2 x i64> %131, <2 x i64> %132, <2 x i32> <i32 0, i32 2>
%134 = xor <2 x i64> %133, <i64 -682693375, i64 poison>
%135 = add <2 x i64> %133, <i64 poison, i64 1226444073>
%136 = shufflevector <2 x i64> %134, <2 x i64> %135, <2 x i32> <i32 0, i32 3>
store <2 x i64> %136, ptr %sunkaddr3503, align 8
%137 = load <2 x i64>, ptr %0, align 8
%dst_val5443178 = extractelement <2 x i64> %137, i64 0
%src_val5363179 = extractelement <2 x i64> %137, i64 1
%mul_result537 = mul i64 %src_val5363179, %dst_val5353177
%add_const_result541 = add i64 %mul_result582.peel, %const3426
%138 = insertelement <2 x i64> poison, i64 %mul_result537, i64 0
%139 = insertelement <2 x i64> %138, i64 %add_const_result541, i64 1
%sunkaddr3506 = getelementptr i8, ptr %0, i64 24
store <2 x i64> %139, ptr %sunkaddr3506, align 8
%xor_const_result545 = xor i64 %dst_val5443178, %const3455
%140 = extractelement <2 x i64> %135, i64 1
%mul_result551 = mul i64 %xor_const_result545, %140
store i64 %mul_result551, ptr %0, align 8
%sunkaddr3507 = getelementptr i8, ptr %0, i64 32
%141 = load <2 x i64>, ptr %sunkaddr3507, align 8
%dst_val5543180 = extractelement <2 x i64> %141, i64 0
%dst_val5653181 = extractelement <2 x i64> %141, i64 1
%xor_const_result555 = xor i64 %dst_val5543180, %const3411
%rotated561 = tail call i64 @llvm.fshl.i64(i64 %140, i64 %140, i64 26)
store i64 %rotated561, ptr %sunkaddr3505, align 8
%142 = load <2 x i64>, ptr %sunkaddr3503, align 8
%src_val5813182 = extractelement <2 x i64> %142, i64 0
%src_val5663183 = extractelement <2 x i64> %142, i64 1
%dst_val_128567 = zext i64 %dst_val5653181 to i128
%src_val_128568 = zext i64 %src_val5663183 to i128
%mul_result_128569 = mul nuw i128 %src_val_128568, %dst_val_128567
%umulh_result570 = lshr i128 %mul_result_128569, 64
%umulh_result_64571 = trunc i128 %umulh_result570 to i64
%sunkaddr3508 = getelementptr i8, ptr %0, i64 40
store i64 %umulh_result_64571, ptr %sunkaddr3508, align 8
%xor_const_result576 = xor i64 %mul_result596.peel, %const3441
%mul_result582 = mul i64 %src_val5813182, %xor_const_result555
store i64 %mul_result582, ptr %sunkaddr3507, align 8
%xor_const_result586 = xor i64 %src_val5663183, %const3453
store i64 %xor_const_result586, ptr %sunkaddr3505, align 8
%add_const_result590 = add i64 %xor_const_result576, %const3467
%sunkaddr3509 = getelementptr i8, ptr %0, i64 56
store i64 %add_const_result590, ptr %sunkaddr3509, align 8
%143 = load <2 x i64>, ptr %sunkaddr3504, align 8
%src_val5953184 = extractelement <2 x i64> %143, i64 0
%dst_val5943185 = extractelement <2 x i64> %143, i64 1
%mul_result596 = mul i64 %dst_val5943185, %src_val5953184
store i64 %mul_result596, ptr %sunkaddr3509, align 8
br label %continue_113
continue_113: ; preds = %continue_113.loopexit, %continue_81
%branch_taken598.lcssa = phi i1 [ %branch_taken426.lcssa, %continue_81 ], [ true, %continue_113.loopexit ]
%src_val5953184.lcssa = phi i64 [ %src_val5953184.peel, %continue_81 ], [ %src_val5953184, %continue_113.loopexit ]
%const3459 = bitcast i64 -686723399 to i64
%const3451 = bitcast i64 -1072928563 to i64
%const3433 = bitcast i64 1702195217 to i64
%const3412 = bitcast i64 434800345 to i64
%144 = load <2 x i64>, ptr %0, align 8
%src_val6063158 = extractelement <2 x i64> %144, i64 0
%dst_val6053159 = extractelement <2 x i64> %144, i64 1
%mul_result607 = mul i64 %dst_val6053159, %src_val6063158
%sunkaddr3510 = getelementptr i8, ptr %0, i64 8
store i64 %mul_result607, ptr %sunkaddr3510, align 8
%add_const_result611 = add i64 %src_val5953184.lcssa, 937909936
%sunkaddr3511 = getelementptr i8, ptr %0, i64 16
%145 = load <2 x i64>, ptr %sunkaddr3511, align 8
%shift3356 = shufflevector <2 x i64> %145, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%146 = xor <2 x i64> %shift3356, %145
%xor_result617 = extractelement <2 x i64> %146, i64 0
%sunkaddr3512 = getelementptr i8, ptr %0, i64 24
store i64 %xor_result617, ptr %sunkaddr3512, align 8
%147 = load <2 x i64>, ptr %sunkaddr3511, align 8
%src_val6223162 = extractelement <2 x i64> %147, i64 0
%dst_val6213163 = extractelement <2 x i64> %147, i64 1
%dst_val_128623 = sext i64 %dst_val6213163 to i128
%src_val_128624 = sext i64 %src_val6223162 to i128
%mul_result_128625 = mul nsw i128 %dst_val_128623, %src_val_128624
%smulh_result626 = lshr i128 %mul_result_128625, 64
%smulh_result_64627 = trunc i128 %smulh_result626 to i64
%sunkaddr3513 = getelementptr i8, ptr %0, i64 32
%148 = load <2 x i64>, ptr %sunkaddr3513, align 8
%shift3357 = shufflevector <2 x i64> %148, <2 x i64> poison, <2 x i32> <i32 poison, i32 0>
%149 = add <2 x i64> %shift3357, %148
%150 = insertelement <2 x i64> %149, i64 %smulh_result_64627, i64 0
store <2 x i64> %150, ptr %sunkaddr3512, align 8
%151 = load <2 x i64>, ptr %sunkaddr3513, align 8
%dst_val6393166 = extractelement <2 x i64> %151, i64 0
%src_val6403167 = extractelement <2 x i64> %151, i64 1
%mul_result641 = mul i64 %dst_val6393166, %src_val6403167
store i64 %mul_result641, ptr %sunkaddr3513, align 8
%add_const_result645 = add i64 %src_val6063158, -2020167780
%xor_const_result649 = xor i64 %add_const_result611, -1068514554
%sunkaddr3514 = getelementptr i8, ptr %0, i64 48
store i64 %xor_const_result649, ptr %sunkaddr3514, align 8
%152 = load <2 x i64>, ptr %sunkaddr3514, align 8
%dst_val6533168 = extractelement <2 x i64> %152, i64 0
%dst_val6593169 = extractelement <2 x i64> %152, i64 1
%mul_result655 = mul i64 %dst_val6533168, %add_const_result645
%sub_result661 = sub i64 %dst_val6593169, %src_val6223162
%153 = insertelement <2 x i64> poison, i64 %mul_result655, i64 0
%154 = insertelement <2 x i64> %153, i64 %sub_result661, i64 1
store <2 x i64> %154, ptr %sunkaddr3514, align 8
%xor_const_result665 = xor i64 %add_const_result645, -1754198708
store i64 %xor_const_result665, ptr %0, align 8
%mul_result671 = mul i64 %sub_result661, %src_val6223162
store i64 %mul_result671, ptr %sunkaddr3511, align 8
%155 = load <2 x i64>, ptr %0, align 8
%shift3358 = shufflevector <2 x i64> %155, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%156 = xor <2 x i64> %shift3358, %155
%xor_result677 = extractelement <2 x i64> %156, i64 0
%157 = load <2 x i64>, ptr %sunkaddr3513, align 8
%src_val6863172 = extractelement <2 x i64> %157, i64 0
%dst_val6803173 = extractelement <2 x i64> %157, i64 1
%add_const_result681 = add i64 %dst_val6803173, 782878309
%sunkaddr3515 = getelementptr i8, ptr %0, i64 40
store i64 %add_const_result681, ptr %sunkaddr3515, align 8
%mul_result687 = mul i64 %src_val6863172, %sub_result661
%sunkaddr3516 = getelementptr i8, ptr %0, i64 56
store i64 %mul_result687, ptr %sunkaddr3516, align 8
%158 = extractelement <2 x i64> %155, i64 1
%159 = load <2 x i64>, ptr %sunkaddr3515, align 8
%dst_val6913154.peel = extractelement <2 x i64> %159, i64 0
%src_val6923155.peel = extractelement <2 x i64> %159, i64 1
%mul_result693.peel = mul i64 %dst_val6913154.peel, %src_val6923155.peel
%160 = load <2 x i64>, ptr %sunkaddr3512, align 8
%dst_val7073152.peel = extractelement <2 x i64> %160, i64 0
%dst_val6963153.peel = extractelement <2 x i64> %160, i64 1
%add_const_result697.peel = add i64 %dst_val6963153.peel, %const3451
%sub_result703.peel = sub i64 %158, %dst_val7073152.peel
%mul_result709.peel = mul i64 %sub_result703.peel, %dst_val7073152.peel
store i64 %mul_result709.peel, ptr %sunkaddr3512, align 8
%rotated715.peel = tail call i64 @llvm.fshl.i64(i64 %sub_result703.peel, i64 %sub_result703.peel, i64 16)
store i64 %rotated715.peel, ptr %sunkaddr3510, align 8
%xor_const_result719.peel = xor i64 %src_val6923155.peel, %const3412
%161 = load <2 x i64>, ptr %sunkaddr3510, align 8
%src_val7243156.peel = extractelement <2 x i64> %161, i64 0
%dst_val7323157.peel = extractelement <2 x i64> %161, i64 1
%mul_result725.peel = mul i64 %src_val7243156.peel, %add_const_result697.peel
store i64 %mul_result725.peel, ptr %sunkaddr3513, align 8
%add_const_result729.peel = add i64 %mul_result687, %const3433
%162 = insertelement <2 x i64> poison, i64 %xor_const_result719.peel, i64 0
%163 = insertelement <2 x i64> %162, i64 %add_const_result729.peel, i64 1
store <2 x i64> %163, ptr %sunkaddr3514, align 8
%rotated735.peel = tail call i64 @llvm.fshl.i64(i64 %dst_val7323157.peel, i64 %dst_val7323157.peel, i64 54)
%dst_val_128741.peel = sext i64 %rotated735.peel to i128
%src_val_128742.peel = sext i64 %xor_const_result719.peel to i128
%mul_result_128743.peel = mul nsw i128 %dst_val_128741.peel, %src_val_128742.peel
%smulh_result744.peel = lshr i128 %mul_result_128743.peel, 64
%smulh_result_64745.peel = trunc i128 %smulh_result744.peel to i64
store i64 %smulh_result_64745.peel, ptr %sunkaddr3511, align 8
%sub_result752.peel = sub i64 %xor_result677, %xor_const_result719.peel
%mul_result758.peel = mul i64 %sub_result752.peel, %xor_const_result719.peel
%shifted764.peel = shl i64 %mul_result709.peel, 1
%add_shift_result765.peel = add i64 %shifted764.peel, %add_const_result729.peel
%add_const_result769.peel = add i64 %mul_result693.peel, %const3459
%164 = insertelement <2 x i64> poison, i64 %add_const_result769.peel, i64 0
%165 = insertelement <2 x i64> %164, i64 %mul_result758.peel, i64 1
store <2 x i64> %165, ptr %sunkaddr3515, align 8
%mul_result775.peel = mul i64 %sub_result752.peel, %add_const_result769.peel
store i64 %mul_result775.peel, ptr %sunkaddr3515, align 8
%166 = and i128 %mul_result_128743.peel, 9903561044693956949882961920
%branch_condition781.peel = icmp ne i128 %166, 0
%or.cond3341.not.peel = select i1 %branch_taken598.lcssa, i1 true, i1 %branch_condition781.peel
br i1 %or.cond3341.not.peel, label %continue_145, label %continue_145.loopexit
continue_145.loopexit: ; preds = %continue_113
%sunkaddr3517 = getelementptr i8, ptr %0, i64 40
%167 = load <2 x i64>, ptr %sunkaddr3517, align 8
%dst_val6913154 = extractelement <2 x i64> %167, i64 0
%src_val6923155 = extractelement <2 x i64> %167, i64 1
%mul_result693 = mul i64 %dst_val6913154, %src_val6923155
%sunkaddr3518 = getelementptr i8, ptr %0, i64 24
%168 = load <2 x i64>, ptr %sunkaddr3518, align 8
%dst_val7073152 = extractelement <2 x i64> %168, i64 0
%dst_val6963153 = extractelement <2 x i64> %168, i64 1
%add_const_result697 = add i64 %dst_val6963153, %const3451
%sub_result703 = sub i64 %src_val7243156.peel, %dst_val7073152
%mul_result709 = mul i64 %sub_result703, %dst_val7073152
store i64 %mul_result709, ptr %sunkaddr3518, align 8
%rotated715 = tail call i64 @llvm.fshl.i64(i64 %sub_result703, i64 %sub_result703, i64 16)
%sunkaddr3519 = getelementptr i8, ptr %0, i64 8
store i64 %rotated715, ptr %sunkaddr3519, align 8
%xor_const_result719 = xor i64 %src_val6923155, %const3412
%169 = load <2 x i64>, ptr %sunkaddr3519, align 8
%src_val7243156 = extractelement <2 x i64> %169, i64 0
%dst_val7323157 = extractelement <2 x i64> %169, i64 1
%mul_result725 = mul i64 %src_val7243156, %add_const_result697
%sunkaddr3520 = getelementptr i8, ptr %0, i64 32
store i64 %mul_result725, ptr %sunkaddr3520, align 8
%add_const_result729 = add i64 %add_shift_result765.peel, %const3433
%rotated735 = tail call i64 @llvm.fshl.i64(i64 %dst_val7323157, i64 %dst_val7323157, i64 54)
%dst_val_128741 = sext i64 %rotated735 to i128
%src_val_128742 = sext i64 %xor_const_result719 to i128
%mul_result_128743 = mul nsw i128 %dst_val_128741, %src_val_128742
%smulh_result744 = lshr i128 %mul_result_128743, 64
%smulh_result_64745 = trunc i128 %smulh_result744 to i64
%sunkaddr3521 = getelementptr i8, ptr %0, i64 16
store i64 %smulh_result_64745, ptr %sunkaddr3521, align 8
%sub_result752 = sub i64 %sub_result752.peel, %xor_const_result719
%mul_result758 = mul i64 %sub_result752, %xor_const_result719
%shifted764 = shl i64 %mul_result709, 1
%add_shift_result765 = add i64 %shifted764, %add_const_result729
%add_const_result769 = add i64 %mul_result693, %const3459
%170 = insertelement <2 x i64> poison, i64 %add_const_result769, i64 0
%171 = insertelement <2 x i64> %170, i64 %mul_result758, i64 1
store <2 x i64> %171, ptr %sunkaddr3517, align 8
%mul_result775 = mul i64 %sub_result752, %add_const_result769
store i64 %mul_result775, ptr %sunkaddr3517, align 8
br label %continue_145
continue_145: ; preds = %continue_145.loopexit, %continue_113
%branch_taken777.lcssa = phi i1 [ %branch_taken598.lcssa, %continue_113 ], [ true, %continue_145.loopexit ]
%src_val7243156.lcssa = phi i64 [ %src_val7243156.peel, %continue_113 ], [ %src_val7243156, %continue_145.loopexit ]
%sub_result752.lcssa = phi i64 [ %sub_result752.peel, %continue_113 ], [ %sub_result752, %continue_145.loopexit ]
%add_shift_result765.lcssa = phi i64 [ %add_shift_result765.peel, %continue_113 ], [ %add_shift_result765, %continue_145.loopexit ]
%mul_result775.lcssa = phi i64 [ %mul_result775.peel, %continue_113 ], [ %mul_result775, %continue_145.loopexit ]
%const3462 = bitcast i64 -499375660 to i64
%const3457 = bitcast i64 -723606595 to i64
%const3452 = bitcast i64 -1063216857 to i64
%const3436 = bitcast i64 1724808396 to i64
%const3425 = bitcast i64 1202228250 to i64
store i64 %sub_result752.lcssa, ptr %0, align 8
%mul_result786 = mul i64 %src_val7243156.lcssa, %add_shift_result765.lcssa
%sunkaddr3522 = getelementptr i8, ptr %0, i64 8
store i64 %mul_result786, ptr %sunkaddr3522, align 8
%sunkaddr3523 = getelementptr i8, ptr %0, i64 24
%172 = load <2 x i64>, ptr %sunkaddr3523, align 8
%shift3359 = shufflevector <2 x i64> %172, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%173 = xor <2 x i64> %shift3359, %172
%xor_result792 = extractelement <2 x i64> %173, i64 0
store i64 %xor_result792, ptr %sunkaddr3523, align 8
%xor_const_result796 = xor i64 %add_shift_result765.lcssa, 435876610
%sunkaddr3524 = getelementptr i8, ptr %0, i64 16
%174 = load <2 x i64>, ptr %sunkaddr3524, align 8
%dst_val8113140 = extractelement <2 x i64> %174, i64 0
%dst_val8003141 = extractelement <2 x i64> %174, i64 1
%dst_val_128802 = zext i64 %dst_val8003141 to i128
%src_val_128803 = zext i64 %xor_const_result796 to i128
%mul_result_128804 = mul nuw i128 %dst_val_128802, %src_val_128803
%umulh_result805 = lshr i128 %mul_result_128804, 64
%umulh_result_64806 = trunc i128 %umulh_result805 to i64
%xor_result813 = xor i64 %dst_val8113140, %xor_const_result796
%175 = insertelement <2 x i64> poison, i64 %xor_result813, i64 0
%176 = insertelement <2 x i64> %175, i64 %umulh_result_64806, i64 1
store <2 x i64> %176, ptr %sunkaddr3524, align 8
%mul_result819 = mul i64 %xor_const_result796, %mul_result775.lcssa
%sunkaddr3525 = getelementptr i8, ptr %0, i64 40
%177 = load <2 x i64>, ptr %sunkaddr3525, align 8
%178 = add <2 x i64> %177, <i64 -785904399, i64 poison>
%179 = xor <2 x i64> %177, <i64 poison, i64 -453103249>
%180 = shufflevector <2 x i64> %178, <2 x i64> %179, <2 x i32> <i32 0, i32 3>
store <2 x i64> %180, ptr %sunkaddr3525, align 8
%181 = load <2 x i64>, ptr %sunkaddr3522, align 8
%src_val8323144 = extractelement <2 x i64> %181, i64 0
%182 = extractelement <2 x i64> %179, i64 1
%mul_result833 = mul i64 %src_val8323144, %182
%sunkaddr3526 = getelementptr i8, ptr %0, i64 48
store i64 %mul_result833, ptr %sunkaddr3526, align 8
%sunkaddr3527 = getelementptr i8, ptr %0, i64 32
%183 = load <2 x i64>, ptr %sunkaddr3527, align 8
%dst_val8363146 = extractelement <2 x i64> %183, i64 0
%xor_const_result837 = xor i64 %dst_val8363146, -1813814010
%184 = xor <2 x i64> %183, %181
%xor_result843 = extractelement <2 x i64> %184, i64 1
store i64 %xor_result843, ptr %sunkaddr3524, align 8
%mul_result849 = mul i64 %xor_result843, %xor_const_result837
%185 = load <2 x i64>, ptr %0, align 8
%186 = xor <2 x i64> %185, <i64 -195599947, i64 poison>
%187 = add <2 x i64> %185, <i64 poison, i64 -407328814>
%188 = shufflevector <2 x i64> %186, <2 x i64> %187, <2 x i32> <i32 0, i32 3>
store <2 x i64> %188, ptr %0, align 8
%189 = load <2 x i64>, ptr %sunkaddr3524, align 8
%src_val8623150 = extractelement <2 x i64> %189, i64 0
%dst_val8613151 = extractelement <2 x i64> %189, i64 1
%mul_result863 = mul i64 %dst_val8613151, %src_val8623150
%190 = insertelement <2 x i64> poison, i64 %mul_result863, i64 0
%191 = insertelement <2 x i64> %190, i64 %mul_result849, i64 1
store <2 x i64> %191, ptr %sunkaddr3523, align 8
%192 = extractelement <2 x i64> %183, i64 1
%193 = extractelement <2 x i64> %186, i64 0
%mul_result869.peel = mul i64 %193, %src_val8623150
store i64 %mul_result869.peel, ptr %sunkaddr3524, align 8
%xor_result875.peel = xor i64 %mul_result819, %192
%sunkaddr3528 = getelementptr i8, ptr %0, i64 56
store i64 %xor_result875.peel, ptr %sunkaddr3528, align 8
%194 = extractelement <2 x i64> %187, i64 1
%rotated881.peel = tail call i64 @llvm.fshl.i64(i64 %194, i64 %194, i64 43)
store i64 %rotated881.peel, ptr %sunkaddr3522, align 8
%195 = load <2 x i64>, ptr %sunkaddr3526, align 8
%dst_val8943128.peel = extractelement <2 x i64> %195, i64 0
%dst_val8853129.peel = extractelement <2 x i64> %195, i64 1
%mul_result887.peel = mul i64 %dst_val8853129.peel, %mul_result849
%xor_const_result891.peel = xor i64 %mul_result849, %const3436
store i64 %xor_const_result891.peel, ptr %sunkaddr3527, align 8
%add_const_result895.peel = add i64 %dst_val8943128.peel, %const3452
%196 = insertelement <2 x i64> poison, i64 %add_const_result895.peel, i64 0
%197 = insertelement <2 x i64> %196, i64 %mul_result887.peel, i64 1
store <2 x i64> %197, ptr %sunkaddr3526, align 8
%198 = load <2 x i64>, ptr %sunkaddr3527, align 8
%src_val9003134.peel = extractelement <2 x i64> %198, i64 0
%dst_val9103135.peel = extractelement <2 x i64> %198, i64 1
%mul_result901.peel = mul i64 %src_val9003134.peel, %add_const_result895.peel
store i64 %mul_result901.peel, ptr %sunkaddr3526, align 8
%199 = load <2 x i64>, ptr %0, align 8
%src_val9163130.peel = extractelement <2 x i64> %199, i64 0
%200 = load <2 x i64>, ptr %sunkaddr3524, align 8
%dst_val9153132.peel = extractelement <2 x i64> %200, i64 0
%201 = sub <2 x i64> %199, %200
%sub_result907.peel = extractelement <2 x i64> %201, i64 1
store i64 %sub_result907.peel, ptr %sunkaddr3522, align 8
%xor_const_result911.peel = xor i64 %dst_val9103135.peel, %const3457
store i64 %xor_const_result911.peel, ptr %sunkaddr3525, align 8
%dst_val_128917.peel = sext i64 %dst_val9153132.peel to i128
%src_val_128918.peel = sext i64 %src_val9163130.peel to i128
%mul_result_128919.peel = mul nsw i128 %dst_val_128917.peel, %src_val_128918.peel
%smulh_result920.peel = lshr i128 %mul_result_128919.peel, 64
%smulh_result_64921.peel = trunc i128 %smulh_result920.peel to i64
%202 = load <2 x i64>, ptr %0, align 8
%dst_val9303136.peel = extractelement <2 x i64> %202, i64 0
%dst_val9253137.peel = extractelement <2 x i64> %202, i64 1
%xor_const_result926.peel = xor i64 %dst_val9253137.peel, %const3425
%203 = insertelement <2 x i64> poison, i64 %xor_const_result926.peel, i64 0
%204 = insertelement <2 x i64> %203, i64 %smulh_result_64921.peel, i64 1
store <2 x i64> %204, ptr %sunkaddr3522, align 8
%mul_result932.peel = mul i64 %dst_val9303136.peel, %xor_const_result911.peel
%205 = extractelement <2 x i64> %200, i64 1
%shifted938.peel = shl i64 %205, 2
%add_shift_result939.peel = add i64 %xor_const_result926.peel, %shifted938.peel
%206 = insertelement <2 x i64> poison, i64 %mul_result932.peel, i64 0
%207 = insertelement <2 x i64> %206, i64 %add_shift_result939.peel, i64 1
store <2 x i64> %207, ptr %0, align 8
%add_const_result943.peel = add i64 %205, %const3462
%mul_result949.peel = mul i64 %add_const_result943.peel, %xor_const_result911.peel
store i64 %mul_result949.peel, ptr %sunkaddr3523, align 8
%208 = and i128 %mul_result_128919.peel, 19923098097544899157863432192
%branch_condition955.peel = icmp ne i128 %208, 0
%or.cond3342.not.peel = select i1 %branch_taken777.lcssa, i1 true, i1 %branch_condition955.peel
br i1 %or.cond3342.not.peel, label %continue_177, label %continue_177.loopexit
continue_177.loopexit: ; preds = %continue_145
%mul_result869 = mul i64 %mul_result932.peel, %smulh_result_64921.peel
%sunkaddr3529 = getelementptr i8, ptr %0, i64 16
store i64 %mul_result869, ptr %sunkaddr3529, align 8
%xor_result875 = xor i64 %mul_result887.peel, %xor_const_result911.peel
%sunkaddr3530 = getelementptr i8, ptr %0, i64 56
store i64 %xor_result875, ptr %sunkaddr3530, align 8
%rotated881 = tail call i64 @llvm.fshl.i64(i64 %add_shift_result939.peel, i64 %add_shift_result939.peel, i64 43)
%sunkaddr3531 = getelementptr i8, ptr %0, i64 8
store i64 %rotated881, ptr %sunkaddr3531, align 8
%sunkaddr3532 = getelementptr i8, ptr %0, i64 48
%209 = load <2 x i64>, ptr %sunkaddr3532, align 8
%dst_val8943128 = extractelement <2 x i64> %209, i64 0
%dst_val8853129 = extractelement <2 x i64> %209, i64 1
%mul_result887 = mul i64 %dst_val8853129, %src_val9003134.peel
%xor_const_result891 = xor i64 %src_val9003134.peel, %const3436
%sunkaddr3533 = getelementptr i8, ptr %0, i64 32
store i64 %xor_const_result891, ptr %sunkaddr3533, align 8
%add_const_result895 = add i64 %dst_val8943128, %const3452
%210 = insertelement <2 x i64> poison, i64 %add_const_result895, i64 0
%211 = insertelement <2 x i64> %210, i64 %mul_result887, i64 1
store <2 x i64> %211, ptr %sunkaddr3532, align 8
%212 = load <2 x i64>, ptr %sunkaddr3533, align 8
%src_val9003134 = extractelement <2 x i64> %212, i64 0
%dst_val9103135 = extractelement <2 x i64> %212, i64 1
%mul_result901 = mul i64 %src_val9003134, %add_const_result895
%213 = load <2 x i64>, ptr %0, align 8
%src_val9163130 = extractelement <2 x i64> %213, i64 0
%214 = load <2 x i64>, ptr %sunkaddr3529, align 8
%dst_val9153132 = extractelement <2 x i64> %214, i64 0
%215 = sub <2 x i64> %213, %214
%sub_result907 = extractelement <2 x i64> %215, i64 1
store i64 %sub_result907, ptr %sunkaddr3531, align 8
%xor_const_result911 = xor i64 %dst_val9103135, %const3457
%sunkaddr3534 = getelementptr i8, ptr %0, i64 40
store i64 %xor_const_result911, ptr %sunkaddr3534, align 8
%dst_val_128917 = sext i64 %dst_val9153132 to i128
%src_val_128918 = sext i64 %src_val9163130 to i128
%mul_result_128919 = mul nsw i128 %dst_val_128917, %src_val_128918
%smulh_result920 = lshr i128 %mul_result_128919, 64
%smulh_result_64921 = trunc i128 %smulh_result920 to i64
%216 = load <2 x i64>, ptr %0, align 8
%dst_val9303136 = extractelement <2 x i64> %216, i64 0
%dst_val9253137 = extractelement <2 x i64> %216, i64 1
%xor_const_result926 = xor i64 %dst_val9253137, %const3425
%217 = insertelement <2 x i64> poison, i64 %xor_const_result926, i64 0
%218 = insertelement <2 x i64> %217, i64 %smulh_result_64921, i64 1
store <2 x i64> %218, ptr %sunkaddr3531, align 8
%mul_result932 = mul i64 %dst_val9303136, %xor_const_result911
%219 = extractelement <2 x i64> %214, i64 1
%shifted938 = shl i64 %219, 2
%add_shift_result939 = add i64 %xor_const_result926, %shifted938
%220 = insertelement <2 x i64> poison, i64 %mul_result932, i64 0
%221 = insertelement <2 x i64> %220, i64 %add_shift_result939, i64 1
store <2 x i64> %221, ptr %0, align 8
%add_const_result943 = add i64 %219, %const3462
%mul_result949 = mul i64 %add_const_result943, %xor_const_result911
%sunkaddr3535 = getelementptr i8, ptr %0, i64 24
store i64 %mul_result949, ptr %sunkaddr3535, align 8
br label %continue_177
continue_177: ; preds = %continue_177.loopexit, %continue_145
%branch_taken951.lcssa = phi i1 [ %branch_taken777.lcssa, %continue_145 ], [ true, %continue_177.loopexit ]
%src_val9003134.lcssa = phi i64 [ %src_val9003134.peel, %continue_145 ], [ %src_val9003134, %continue_177.loopexit ]
%mul_result901.lcssa = phi i64 [ %mul_result901.peel, %continue_145 ], [ %mul_result901, %continue_177.loopexit ]
%mul_result932.lcssa = phi i64 [ %mul_result932.peel, %continue_145 ], [ %mul_result932, %continue_177.loopexit ]
%const3438 = bitcast i64 2069403552 to i64
%const3420 = bitcast i64 1007522777 to i64
%const3413 = bitcast i64 437192413 to i64
%sunkaddr3536 = getelementptr i8, ptr %0, i64 8
%222 = load <2 x i64>, ptr %sunkaddr3536, align 8
%dst_val9583114 = extractelement <2 x i64> %222, i64 0
%dst_val9723115 = extractelement <2 x i64> %222, i64 1
%mul_result960 = mul i64 %dst_val9583114, %src_val9003134.lcssa
store i64 %mul_result960, ptr %sunkaddr3536, align 8
%add_const_result964 = add i64 %src_val9003134.lcssa, -853490430
%sunkaddr3537 = getelementptr i8, ptr %0, i64 32
store i64 %add_const_result964, ptr %sunkaddr3537, align 8
%xor_const_result968 = xor i64 %mul_result901.lcssa, 374667219
%sunkaddr3538 = getelementptr i8, ptr %0, i64 48
store i64 %xor_const_result968, ptr %sunkaddr3538, align 8
%dst_val_128974 = sext i64 %dst_val9723115 to i128
%mul_result_128976 = mul nsw i128 %dst_val_128974, %dst_val_128974
%smulh_result977 = lshr i128 %mul_result_128976, 64
%smulh_result_64978 = trunc i128 %smulh_result977 to i64
%sunkaddr3539 = getelementptr i8, ptr %0, i64 16
store i64 %smulh_result_64978, ptr %sunkaddr3539, align 8
%223 = load <2 x i64>, ptr %sunkaddr3538, align 8
%shift3360 = shufflevector <2 x i64> %223, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%224 = sub <2 x i64> %223, %shift3360
%sub_result985 = extractelement <2 x i64> %224, i64 0
%225 = load <2 x i64>, ptr %sunkaddr3537, align 8
%dst_val9943116 = extractelement <2 x i64> %225, i64 0
%dst_val9893117 = extractelement <2 x i64> %225, i64 1
%mul_result991 = mul i64 %dst_val9893117, %mul_result932.lcssa
%xor_const_result995 = xor i64 %dst_val9943116, 1919811629
%226 = insertelement <2 x i64> poison, i64 %xor_const_result995, i64 0
%227 = insertelement <2 x i64> %226, i64 %mul_result991, i64 1
store <2 x i64> %227, ptr %sunkaddr3537, align 8
%shifted1001 = shl i64 %mul_result932.lcssa, 2
%add_shift_result1002 = add i64 %sub_result985, %shifted1001
%mul_result1008 = mul i64 %add_shift_result1002, %mul_result932.lcssa
%228 = load <2 x i64>, ptr %0, align 8
%dst_val10183120 = extractelement <2 x i64> %228, i64 0
%dst_val10123121 = extractelement <2 x i64> %228, i64 1
%add_shift_result1015 = add i64 %dst_val10123121, %dst_val10183120
%rotated1021 = tail call i64 @llvm.fshl.i64(i64 %dst_val10183120, i64 %dst_val10183120, i64 16)
%sunkaddr3540 = getelementptr i8, ptr %0, i64 24
%229 = load <2 x i64>, ptr %sunkaddr3540, align 8
%src_val10363124 = extractelement <2 x i64> %229, i64 0
%src_val10263125 = extractelement <2 x i64> %229, i64 1
%mul_result1027 = mul i64 %src_val10263125, %rotated1021
%230 = extractelement <2 x i64> %223, i64 1
%add_const_result1031 = add i64 %230, 597233129
%sub_result1037 = sub i64 %add_shift_result1015, %src_val10363124
store i64 %sub_result1037, ptr %sunkaddr3536, align 8
%mul_result1043 = mul i64 %src_val10263125, %add_const_result1031
%sunkaddr3541 = getelementptr i8, ptr %0, i64 56
store i64 %mul_result1043, ptr %sunkaddr3541, align 8
%231 = load <2 x i64>, ptr %sunkaddr3536, align 8
%dst_val10473102.peel = extractelement <2 x i64> %231, i64 0
%dst_val10533103.peel = extractelement <2 x i64> %231, i64 1
%mul_result1049.peel = mul i64 %dst_val10473102.peel, %mul_result1008
%shifted1055.peel = shl i64 %src_val10363124, 3
%add_shift_result1056.peel = add i64 %dst_val10533103.peel, %shifted1055.peel
%232 = insertelement <2 x i64> poison, i64 %mul_result1049.peel, i64 0
%233 = insertelement <2 x i64> %232, i64 %add_shift_result1056.peel, i64 1
store <2 x i64> %233, ptr %sunkaddr3536, align 8
%add_const_result1060.peel = add i64 %mul_result1008, %const3420
store i64 %add_const_result1060.peel, ptr %sunkaddr3538, align 8
%234 = load <2 x i64>, ptr %sunkaddr3539, align 8
%dst_val10643104.peel = extractelement <2 x i64> %234, i64 0
%src_val10653105.peel = extractelement <2 x i64> %234, i64 1
%mul_result1066.peel = mul i64 %dst_val10643104.peel, %src_val10653105.peel
%xor_const_result1070.peel = xor i64 %src_val10653105.peel, %const3413
%235 = insertelement <2 x i64> poison, i64 %mul_result1066.peel, i64 0
%236 = insertelement <2 x i64> %235, i64 %xor_const_result1070.peel, i64 1
store <2 x i64> %236, ptr %sunkaddr3539, align 8
%add_const_result1074.peel = add i64 %mul_result1027, %const3438
store i64 %add_const_result1074.peel, ptr %0, align 8
%mul_result1080.peel = mul i64 %xor_const_result1070.peel, %add_const_result1074.peel
store i64 %mul_result1080.peel, ptr %sunkaddr3540, align 8
%237 = load <2 x i64>, ptr %0, align 8
%dst_val10833106.peel = extractelement <2 x i64> %237, i64 0
%dst_val11073107.peel = extractelement <2 x i64> %237, i64 1
%rotated1086.peel = tail call i64 @llvm.fshl.i64(i64 %dst_val10833106.peel, i64 %dst_val10833106.peel, i64 25)
%sunkaddr3542 = getelementptr i8, ptr %0, i64 40
%238 = load <2 x i64>, ptr %sunkaddr3542, align 8
%shift3361.peel = shufflevector <2 x i64> %238, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%239 = sub <2 x i64> %238, %shift3361.peel
%sub_result1092.peel = extractelement <2 x i64> %239, i64 0
%240 = load <2 x i64>, ptr %sunkaddr3538, align 8
%dst_val11133110.peel = extractelement <2 x i64> %240, i64 0
%dst_val10963111.peel = extractelement <2 x i64> %240, i64 1
%dst_val_1281098.peel = zext i64 %dst_val10963111.peel to i128
%src_val_1281099.peel = zext i64 %dst_val11133110.peel to i128
%mul_result_1281100.peel = mul nuw i128 %dst_val_1281098.peel, %src_val_1281099.peel
%umulh_result1101.peel = lshr i128 %mul_result_1281100.peel, 64
%umulh_result_641102.peel = trunc i128 %umulh_result1101.peel to i64
%xor_result1109.peel = xor i64 %dst_val11133110.peel, %dst_val11073107.peel
%mul_result1115.peel = mul i64 %sub_result1092.peel, %dst_val11133110.peel
%241 = insertelement <2 x i64> poison, i64 %mul_result1115.peel, i64 0
%242 = insertelement <2 x i64> %241, i64 %umulh_result_641102.peel, i64 1
store <2 x i64> %242, ptr %sunkaddr3538, align 8
%243 = load <2 x i64>, ptr %sunkaddr3540, align 8
%src_val11333112.peel = extractelement <2 x i64> %243, i64 0
%dst_val11193113.peel = extractelement <2 x i64> %243, i64 1
%shifted1121.peel = shl i64 %sub_result1092.peel, 2
%add_shift_result1122.peel = add i64 %dst_val11193113.peel, %shifted1121.peel
%rotated1128.peel = tail call i64 @llvm.fshl.i64(i64 %sub_result1092.peel, i64 %sub_result1092.peel, i64 63)
%244 = insertelement <2 x i64> poison, i64 %add_shift_result1122.peel, i64 0
%245 = insertelement <2 x i64> %244, i64 %rotated1128.peel, i64 1
store <2 x i64> %245, ptr %sunkaddr3537, align 8
%mul_result1134.peel = mul i64 %src_val11333112.peel, %rotated1086.peel
%246 = insertelement <2 x i64> poison, i64 %mul_result1134.peel, i64 0
%247 = insertelement <2 x i64> %246, i64 %xor_result1109.peel, i64 1
store <2 x i64> %247, ptr %0, align 8
%248 = and i128 %mul_result_1281100.peel, 3036481648485181872406528
%branch_condition1140.peel = icmp ne i128 %248, 0
%or.cond3343.not.peel = select i1 %branch_taken951.lcssa, i1 true, i1 %branch_condition1140.peel
br i1 %or.cond3343.not.peel, label %continue_209, label %continue_209.loopexit
continue_209.loopexit: ; preds = %continue_177
%sunkaddr3543 = getelementptr i8, ptr %0, i64 8
%249 = load <2 x i64>, ptr %sunkaddr3543, align 8
%dst_val10473102 = extractelement <2 x i64> %249, i64 0
%dst_val10533103 = extractelement <2 x i64> %249, i64 1
%mul_result1049 = mul i64 %dst_val10473102, %mul_result1115.peel
%shifted1055 = shl i64 %src_val11333112.peel, 3
%add_shift_result1056 = add i64 %dst_val10533103, %shifted1055
%250 = insertelement <2 x i64> poison, i64 %mul_result1049, i64 0
%251 = insertelement <2 x i64> %250, i64 %add_shift_result1056, i64 1
store <2 x i64> %251, ptr %sunkaddr3543, align 8
%add_const_result1060 = add i64 %mul_result1115.peel, %const3420
%sunkaddr3544 = getelementptr i8, ptr %0, i64 48
store i64 %add_const_result1060, ptr %sunkaddr3544, align 8
%sunkaddr3545 = getelementptr i8, ptr %0, i64 16
%252 = load <2 x i64>, ptr %sunkaddr3545, align 8
%dst_val10643104 = extractelement <2 x i64> %252, i64 0
%src_val10653105 = extractelement <2 x i64> %252, i64 1
%mul_result1066 = mul i64 %dst_val10643104, %src_val10653105
%xor_const_result1070 = xor i64 %src_val10653105, %const3413
%253 = insertelement <2 x i64> poison, i64 %mul_result1066, i64 0
%254 = insertelement <2 x i64> %253, i64 %xor_const_result1070, i64 1
store <2 x i64> %254, ptr %sunkaddr3545, align 8
%add_const_result1074 = add i64 %mul_result1134.peel, %const3438
store i64 %add_const_result1074, ptr %0, align 8
%mul_result1080 = mul i64 %xor_const_result1070, %add_const_result1074
%sunkaddr3546 = getelementptr i8, ptr %0, i64 24
store i64 %mul_result1080, ptr %sunkaddr3546, align 8
%255 = load <2 x i64>, ptr %0, align 8
%dst_val10833106 = extractelement <2 x i64> %255, i64 0
%dst_val11073107 = extractelement <2 x i64> %255, i64 1
%rotated1086 = tail call i64 @llvm.fshl.i64(i64 %dst_val10833106, i64 %dst_val10833106, i64 25)
%sunkaddr3547 = getelementptr i8, ptr %0, i64 40
%256 = load <2 x i64>, ptr %sunkaddr3547, align 8
%shift3361 = shufflevector <2 x i64> %256, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%257 = sub <2 x i64> %256, %shift3361
%sub_result1092 = extractelement <2 x i64> %257, i64 0
%258 = load <2 x i64>, ptr %sunkaddr3544, align 8
%dst_val11133110 = extractelement <2 x i64> %258, i64 0
%dst_val10963111 = extractelement <2 x i64> %258, i64 1
%dst_val_1281098 = zext i64 %dst_val10963111 to i128
%src_val_1281099 = zext i64 %dst_val11133110 to i128
%mul_result_1281100 = mul nuw i128 %dst_val_1281098, %src_val_1281099
%umulh_result1101 = lshr i128 %mul_result_1281100, 64
%umulh_result_641102 = trunc i128 %umulh_result1101 to i64
%xor_result1109 = xor i64 %dst_val11133110, %dst_val11073107
%mul_result1115 = mul i64 %sub_result1092, %dst_val11133110
%259 = load <2 x i64>, ptr %sunkaddr3546, align 8
%src_val11333112 = extractelement <2 x i64> %259, i64 0
%dst_val11193113 = extractelement <2 x i64> %259, i64 1
%shifted1121 = shl i64 %sub_result1092, 2
%add_shift_result1122 = add i64 %dst_val11193113, %shifted1121
%rotated1128 = tail call i64 @llvm.fshl.i64(i64 %sub_result1092, i64 %sub_result1092, i64 63)
%260 = insertelement <2 x i64> poison, i64 %add_shift_result1122, i64 0
%261 = insertelement <2 x i64> %260, i64 %rotated1128, i64 1
%sunkaddr3548 = getelementptr i8, ptr %0, i64 32
store <2 x i64> %261, ptr %sunkaddr3548, align 8
%mul_result1134 = mul i64 %src_val11333112, %rotated1086
%262 = insertelement <2 x i64> poison, i64 %mul_result1134, i64 0
%263 = insertelement <2 x i64> %262, i64 %xor_result1109, i64 1
store <2 x i64> %263, ptr %0, align 8
br label %continue_209
continue_209: ; preds = %continue_209.loopexit, %continue_177
%branch_taken1136.lcssa = phi i1 [ %branch_taken951.lcssa, %continue_177 ], [ true, %continue_209.loopexit ]
%umulh_result_641102.lcssa = phi i64 [ %umulh_result_641102.peel, %continue_177 ], [ %umulh_result_641102, %continue_209.loopexit ]
%xor_result1109.lcssa = phi i64 [ %xor_result1109.peel, %continue_177 ], [ %xor_result1109, %continue_209.loopexit ]
%mul_result1115.lcssa = phi i64 [ %mul_result1115.peel, %continue_177 ], [ %mul_result1115, %continue_209.loopexit ]
%rotated1128.lcssa = phi i64 [ %rotated1128.peel, %continue_177 ], [ %rotated1128, %continue_209.loopexit ]
%const3454 = bitcast i64 -862726600 to i64
%const3439 = bitcast i64 2132318569 to i64
%const3430 = bitcast i64 1649350728 to i64
%const3429 = bitcast i64 1456771341 to i64
%const3422 = bitcast i64 1120263772 to i64
%mul_result1145 = mul i64 %xor_result1109.lcssa, %rotated1128.lcssa
%sunkaddr3549 = getelementptr i8, ptr %0, i64 40
store i64 %mul_result1145, ptr %sunkaddr3549, align 8
%sunkaddr3550 = getelementptr i8, ptr %0, i64 16
%264 = load <2 x i64>, ptr %sunkaddr3550, align 8
%dst_val11613086 = extractelement <2 x i64> %264, i64 0
%dst_val11483087 = extractelement <2 x i64> %264, i64 1
%rotated1151 = tail call i64 @llvm.fshl.i64(i64 %dst_val11483087, i64 %dst_val11483087, i64 13)
%sunkaddr3551 = getelementptr i8, ptr %0, i64 24
store i64 %rotated1151, ptr %sunkaddr3551, align 8
%sunkaddr3552 = getelementptr i8, ptr %0, i64 8
%265 = load <2 x i64>, ptr %sunkaddr3552, align 8
%shift3362 = shufflevector <2 x i64> %265, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%266 = xor <2 x i64> %shift3362, %265
%xor_result1157 = extractelement <2 x i64> %266, i64 0
store i64 %xor_result1157, ptr %sunkaddr3552, align 8
%267 = load <2 x i64>, ptr %0, align 8
%src_val11833088 = extractelement <2 x i64> %267, i64 0
%src_val11623089 = extractelement <2 x i64> %267, i64 1
%dst_val_1281163 = sext i64 %dst_val11613086 to i128
%src_val_1281164 = sext i64 %src_val11623089 to i128
%mul_result_1281165 = mul nsw i128 %src_val_1281164, %dst_val_1281163
%smulh_result1166 = lshr i128 %mul_result_1281165, 64
%smulh_result_641167 = trunc i128 %smulh_result1166 to i64
%add_const_result1172 = add i64 %mul_result1115.lcssa, 1954932066
%sunkaddr3553 = getelementptr i8, ptr %0, i64 48
store i64 %add_const_result1172, ptr %sunkaddr3553, align 8
%268 = load <2 x i64>, ptr %sunkaddr3551, align 8
%dst_val11883090 = extractelement <2 x i64> %268, i64 0
%dst_val11763091 = extractelement <2 x i64> %268, i64 1
%mul_result1178 = mul i64 %dst_val11763091, %umulh_result_641102.lcssa
%sub_result1184 = sub i64 %umulh_result_641102.lcssa, %src_val11833088
%xor_result1190 = xor i64 %dst_val11883090, %add_const_result1172
%269 = insertelement <2 x i64> poison, i64 %xor_result1190, i64 0
%270 = insertelement <2 x i64> %269, i64 %mul_result1178, i64 1
store <2 x i64> %270, ptr %sunkaddr3551, align 8
%mul_result1196 = mul i64 %xor_result1190, %src_val11833088
store i64 %mul_result1196, ptr %sunkaddr3551, align 8
%271 = load <2 x i64>, ptr %sunkaddr3549, align 8
%src_val12083096 = extractelement <2 x i64> %271, i64 0
%src_val12013097 = extractelement <2 x i64> %271, i64 1
%shifted1202 = shl i64 %src_val12013097, 2
%add_shift_result1203 = add i64 %shifted1202, %sub_result1184
%xor_result1209 = xor i64 %src_val12083096, %src_val11623089
store i64 %xor_result1209, ptr %sunkaddr3552, align 8
%272 = load <2 x i64>, ptr %0, align 8
%dst_val12183098 = extractelement <2 x i64> %272, i64 0
%dst_val12133099 = extractelement <2 x i64> %272, i64 1
%mul_result1215 = mul i64 %dst_val12133099, %src_val12013097
%add_const_result1219 = add i64 %dst_val12183098, -234863945
%273 = insertelement <2 x i64> poison, i64 %add_const_result1219, i64 0
%274 = insertelement <2 x i64> %273, i64 %mul_result1215, i64 1
store <2 x i64> %274, ptr %0, align 8
%sub_result1225 = sub i64 %src_val12083096, %src_val12013097
%mul_result1231 = mul i64 %src_val12013097, %smulh_result_641167
%275 = insertelement <2 x i64> poison, i64 %sub_result1225, i64 0
%276 = insertelement <2 x i64> %275, i64 %mul_result1231, i64 1
store <2 x i64> %276, ptr %sunkaddr3549, align 8
%mul_result1237.peel = mul i64 %mul_result1178, %smulh_result_641167
store i64 %mul_result1237.peel, ptr %sunkaddr3550, align 8
%add_const_result1241.peel = add i64 %add_shift_result1203, %const3430
%sunkaddr3554 = getelementptr i8, ptr %0, i64 56
store i64 %add_const_result1241.peel, ptr %sunkaddr3554, align 8
%xor_const_result1245.peel = xor i64 %add_const_result1219, %const3422
store i64 %xor_const_result1245.peel, ptr %0, align 8
%277 = load <2 x i64>, ptr %0, align 8
%dst_val12493072.peel = extractelement <2 x i64> %277, i64 0
%sunkaddr3555 = getelementptr i8, ptr %0, i64 32
%278 = load <2 x i64>, ptr %sunkaddr3555, align 8
%src_val12503075.peel = extractelement <2 x i64> %278, i64 1
%mul_result1251.peel = mul i64 %src_val12503075.peel, %dst_val12493072.peel
store i64 %mul_result1251.peel, ptr %0, align 8
%shift3363.peel = shufflevector <2 x i64> %277, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%279 = add <2 x i64> %278, %shift3363.peel
%add_shift_result1258.peel = extractelement <2 x i64> %279, i64 0
store i64 %add_shift_result1258.peel, ptr %sunkaddr3555, align 8
%280 = extractelement <2 x i64> %277, i64 1
%xor_const_result1262.peel = xor i64 %280, %const3454
%mul_result1268.peel = mul i64 %add_shift_result1258.peel, %src_val12503075.peel
store i64 %mul_result1268.peel, ptr %sunkaddr3549, align 8
%281 = load <2 x i64>, ptr %sunkaddr3550, align 8
%dst_val12823076.peel = extractelement <2 x i64> %281, i64 0
%dst_val12723077.peel = extractelement <2 x i64> %281, i64 1
%xor_result1274.peel = xor i64 %dst_val12723077.peel, %add_shift_result1258.peel
%282 = load <2 x i64>, ptr %sunkaddr3553, align 8
%dst_val12773078.peel = extractelement <2 x i64> %282, i64 0
%src_val12833079.peel = extractelement <2 x i64> %282, i64 1
%add_const_result1278.peel = add i64 %dst_val12773078.peel, %const3429
store i64 %add_const_result1278.peel, ptr %sunkaddr3553, align 8
%dst_val_1281284.peel = zext i64 %dst_val12823076.peel to i128
%src_val_1281285.peel = zext i64 %src_val12833079.peel to i128
%mul_result_1281286.peel = mul nuw i128 %src_val_1281285.peel, %dst_val_1281284.peel
%umulh_result1287.peel = lshr i128 %mul_result_1281286.peel, 64
%umulh_result_641288.peel = trunc i128 %umulh_result1287.peel to i64
%add_shift_result1296.peel = add i64 %src_val12833079.peel, %xor_result1274.peel
%283 = insertelement <2 x i64> poison, i64 %umulh_result_641288.peel, i64 0
%284 = insertelement <2 x i64> %283, i64 %add_shift_result1296.peel, i64 1
store <2 x i64> %284, ptr %sunkaddr3550, align 8
%mul_result1302.peel = mul i64 %add_const_result1278.peel, %add_shift_result1296.peel
store i64 %mul_result1302.peel, ptr %sunkaddr3551, align 8
%285 = load <2 x i64>, ptr %sunkaddr3553, align 8
%shift3364.peel = shufflevector <2 x i64> %285, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%286 = sub <2 x i64> %285, %shift3364.peel
%sub_result1308.peel = extractelement <2 x i64> %286, i64 0
store i64 %sub_result1308.peel, ptr %sunkaddr3553, align 8
%add_const_result1312.peel = add i64 %xor_const_result1262.peel, %const3439
store i64 %add_const_result1312.peel, ptr %sunkaddr3552, align 8
%287 = load <2 x i64>, ptr %0, align 8
%src_val13173082.peel = extractelement <2 x i64> %287, i64 0
%dst_val13163083.peel = extractelement <2 x i64> %287, i64 1
%mul_result1318.peel = mul i64 %dst_val13163083.peel, %src_val13173082.peel
store i64 %mul_result1318.peel, ptr %sunkaddr3552, align 8
%288 = and i128 %mul_result_1281286.peel, 42128647109504550069837234176
%branch_condition1324.peel = icmp ne i128 %288, 0
%or.cond3344.not.peel = select i1 %branch_taken1136.lcssa, i1 true, i1 %branch_condition1324.peel
br i1 %or.cond3344.not.peel, label %continue_241, label %continue_241.loopexit
continue_241.loopexit: ; preds = %continue_209
%289 = extractelement <2 x i64> %285, i64 1
%mul_result1237 = mul i64 %add_shift_result1258.peel, %umulh_result_641288.peel
%sunkaddr3556 = getelementptr i8, ptr %0, i64 16
store i64 %mul_result1237, ptr %sunkaddr3556, align 8
%add_const_result1241 = add i64 %289, %const3430
%sunkaddr3557 = getelementptr i8, ptr %0, i64 56
store i64 %add_const_result1241, ptr %sunkaddr3557, align 8
%xor_const_result1245 = xor i64 %src_val13173082.peel, %const3422
store i64 %xor_const_result1245, ptr %0, align 8
%290 = load <2 x i64>, ptr %0, align 8
%dst_val12493072 = extractelement <2 x i64> %290, i64 0
%sunkaddr3558 = getelementptr i8, ptr %0, i64 32
%291 = load <2 x i64>, ptr %sunkaddr3558, align 8
%src_val12503075 = extractelement <2 x i64> %291, i64 1
%mul_result1251 = mul i64 %src_val12503075, %dst_val12493072
store i64 %mul_result1251, ptr %0, align 8
%shift3363 = shufflevector <2 x i64> %290, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%292 = add <2 x i64> %291, %shift3363
%add_shift_result1258 = extractelement <2 x i64> %292, i64 0
store i64 %add_shift_result1258, ptr %sunkaddr3558, align 8
%293 = extractelement <2 x i64> %290, i64 1
%xor_const_result1262 = xor i64 %293, %const3454
%mul_result1268 = mul i64 %add_shift_result1258, %src_val12503075
%sunkaddr3559 = getelementptr i8, ptr %0, i64 40
store i64 %mul_result1268, ptr %sunkaddr3559, align 8
%294 = load <2 x i64>, ptr %sunkaddr3556, align 8
%dst_val12823076 = extractelement <2 x i64> %294, i64 0
%dst_val12723077 = extractelement <2 x i64> %294, i64 1
%xor_result1274 = xor i64 %dst_val12723077, %add_shift_result1258
%sunkaddr3560 = getelementptr i8, ptr %0, i64 48
%295 = load <2 x i64>, ptr %sunkaddr3560, align 8
%dst_val12773078 = extractelement <2 x i64> %295, i64 0
%src_val12833079 = extractelement <2 x i64> %295, i64 1
%add_const_result1278 = add i64 %dst_val12773078, %const3429
store i64 %add_const_result1278, ptr %sunkaddr3560, align 8
%dst_val_1281284 = zext i64 %dst_val12823076 to i128
%src_val_1281285 = zext i64 %src_val12833079 to i128
%mul_result_1281286 = mul nuw i128 %src_val_1281285, %dst_val_1281284
%umulh_result1287 = lshr i128 %mul_result_1281286, 64
%umulh_result_641288 = trunc i128 %umulh_result1287 to i64
%add_shift_result1296 = add i64 %src_val12833079, %xor_result1274
%296 = insertelement <2 x i64> poison, i64 %umulh_result_641288, i64 0
%297 = insertelement <2 x i64> %296, i64 %add_shift_result1296, i64 1
store <2 x i64> %297, ptr %sunkaddr3556, align 8
%mul_result1302 = mul i64 %add_const_result1278, %add_shift_result1296
%sunkaddr3561 = getelementptr i8, ptr %0, i64 24
store i64 %mul_result1302, ptr %sunkaddr3561, align 8
%298 = load <2 x i64>, ptr %sunkaddr3560, align 8
%shift3364 = shufflevector <2 x i64> %298, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%299 = sub <2 x i64> %298, %shift3364
%sub_result1308 = extractelement <2 x i64> %299, i64 0
store i64 %sub_result1308, ptr %sunkaddr3560, align 8
%add_const_result1312 = add i64 %xor_const_result1262, %const3439
%sunkaddr3562 = getelementptr i8, ptr %0, i64 8
store i64 %add_const_result1312, ptr %sunkaddr3562, align 8
%300 = load <2 x i64>, ptr %0, align 8
%src_val13173082 = extractelement <2 x i64> %300, i64 0
%dst_val13163083 = extractelement <2 x i64> %300, i64 1
%mul_result1318 = mul i64 %dst_val13163083, %src_val13173082
store i64 %mul_result1318, ptr %sunkaddr3562, align 8
br label %continue_241
continue_241: ; preds = %continue_241.loopexit, %continue_209
%branch_taken1320.lcssa = phi i1 [ %branch_taken1136.lcssa, %continue_209 ], [ true, %continue_241.loopexit ]
%sub_result1308.lcssa = phi i64 [ %sub_result1308.peel, %continue_209 ], [ %sub_result1308, %continue_241.loopexit ]
%src_val13173082.lcssa = phi i64 [ %src_val13173082.peel, %continue_209 ], [ %src_val13173082, %continue_241.loopexit ]
%const3445 = bitcast i64 -1641771221 to i64
%const3419 = bitcast i64 956110196 to i64
%const3410 = bitcast i64 393177486 to i64
%sunkaddr3563 = getelementptr i8, ptr %0, i64 24
%301 = load <2 x i64>, ptr %sunkaddr3563, align 8
%src_val13443056 = extractelement <2 x i64> %301, i64 0
%dst_val13273057 = extractelement <2 x i64> %301, i64 1
%mul_result1329 = mul i64 %dst_val13273057, %sub_result1308.lcssa
%sunkaddr3564 = getelementptr i8, ptr %0, i64 32
store i64 %mul_result1329, ptr %sunkaddr3564, align 8
%sunkaddr3565 = getelementptr i8, ptr %0, i64 48
%302 = load <2 x i64>, ptr %sunkaddr3565, align 8
%shift3365 = shufflevector <2 x i64> %302, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%303 = xor <2 x i64> %shift3365, %302
%xor_result1335 = extractelement <2 x i64> %303, i64 0
store i64 %xor_result1335, ptr %sunkaddr3565, align 8
%add_const_result1339 = add i64 %src_val13173082.lcssa, -1819496070
store i64 %add_const_result1339, ptr %0, align 8
%304 = extractelement <2 x i64> %302, i64 1
%dst_val_1281345 = zext i64 %304 to i128
%src_val_1281346 = zext i64 %src_val13443056 to i128
%mul_result_1281347 = mul nuw i128 %dst_val_1281345, %src_val_1281346
%umulh_result1348 = lshr i128 %mul_result_1281347, 64
%umulh_result_641349 = trunc i128 %umulh_result1348 to i64
%sunkaddr3566 = getelementptr i8, ptr %0, i64 40
%305 = load <2 x i64>, ptr %sunkaddr3566, align 8
%src_val13553064 = extractelement <2 x i64> %305, i64 0
%dst_val13543065 = extractelement <2 x i64> %305, i64 1
%shifted1356 = shl i64 %src_val13553064, 1
%add_shift_result1357 = add i64 %shifted1356, %dst_val13543065
%306 = insertelement <2 x i64> poison, i64 %add_shift_result1357, i64 0
%307 = insertelement <2 x i64> %306, i64 %umulh_result_641349, i64 1
store <2 x i64> %307, ptr %sunkaddr3565, align 8
%308 = load <2 x i64>, ptr %0, align 8
%dst_val13613060 = extractelement <2 x i64> %308, i64 0
%src_val13623061 = extractelement <2 x i64> %308, i64 1
%mul_result1363 = mul i64 %dst_val13613060, %src_val13623061
%sunkaddr3567 = getelementptr i8, ptr %0, i64 16
%309 = load <2 x i64>, ptr %sunkaddr3567, align 8
%shift3366 = shufflevector <2 x i64> %309, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%310 = sub <2 x i64> %309, %shift3366
%311 = extractelement <2 x i64> %309, i64 1
%rotated1375 = tail call i64 @llvm.fshl.i64(i64 %311, i64 %311, i64 36)
%312 = insertelement <2 x i64> %310, i64 %rotated1375, i64 1
store <2 x i64> %312, ptr %sunkaddr3567, align 8
%sunkaddr3568 = getelementptr i8, ptr %0, i64 8
%313 = load <2 x i64>, ptr %sunkaddr3568, align 8
%dst_val13843066 = extractelement <2 x i64> %313, i64 0
%dst_val13793067 = extractelement <2 x i64> %313, i64 1
%mul_result1381 = mul i64 %dst_val13793067, %dst_val13843066
%xor_const_result1385 = xor i64 %dst_val13843066, 86193332
%314 = insertelement <2 x i64> poison, i64 %xor_const_result1385, i64 0
%315 = insertelement <2 x i64> %314, i64 %mul_result1381, i64 1
store <2 x i64> %315, ptr %sunkaddr3568, align 8
%add_const_result1389 = add i64 %rotated1375, -35755358
store i64 %add_const_result1389, ptr %sunkaddr3563, align 8
%316 = load <2 x i64>, ptr %sunkaddr3563, align 8
%src_val13943068 = extractelement <2 x i64> %316, i64 0
%mul_result1395 = mul i64 %src_val13943068, %xor_const_result1385
store i64 %mul_result1395, ptr %sunkaddr3568, align 8
%317 = shufflevector <2 x i64> %316, <2 x i64> %305, <2 x i32> <i32 1, i32 2>
%318 = xor <2 x i64> %317, <i64 -968088976, i64 poison>
%319 = add <2 x i64> %317, <i64 poison, i64 812121171>
%320 = shufflevector <2 x i64> %318, <2 x i64> %319, <2 x i32> <i32 0, i32 3>
store <2 x i64> %320, ptr %sunkaddr3564, align 8
%321 = extractelement <2 x i64> %318, i64 0
%322 = extractelement <2 x i64> %319, i64 1
%mul_result1409 = mul i64 %321, %322
store i64 %mul_result1409, ptr %sunkaddr3564, align 8
%323 = load <2 x i64>, ptr %sunkaddr3567, align 8
%src_val14203046.peel = extractelement <2 x i64> %323, i64 0
%src_val14143047.peel = extractelement <2 x i64> %323, i64 1
%mul_result1415.peel = mul i64 %src_val14143047.peel, %322
%shifted1421.peel = shl i64 %src_val14203046.peel, 2
%add_shift_result1422.peel = add i64 %shifted1421.peel, %src_val14143047.peel
store i64 %add_shift_result1422.peel, ptr %sunkaddr3563, align 8
%add_const_result1426.peel = add i64 %mul_result1363, %const3445
store i64 %add_const_result1426.peel, ptr %0, align 8
%324 = load <2 x i64>, ptr %0, align 8
%dst_val14303048.peel = extractelement <2 x i64> %324, i64 0
%dst_val14353049.peel = extractelement <2 x i64> %324, i64 1
%325 = load <2 x i64>, ptr %sunkaddr3567, align 8
%dst_val14393050.peel = extractelement <2 x i64> %325, i64 0
%src_val14313051.peel = extractelement <2 x i64> %325, i64 1
%mul_result1432.peel = mul i64 %src_val14313051.peel, %dst_val14303048.peel
%xor_const_result1436.peel = xor i64 %dst_val14353049.peel, %const3410
%326 = insertelement <2 x i64> poison, i64 %mul_result1432.peel, i64 0
%327 = insertelement <2 x i64> %326, i64 %xor_const_result1436.peel, i64 1
store <2 x i64> %327, ptr %0, align 8
%add_const_result1440.peel = add i64 %dst_val14393050.peel, %const3419
store i64 %add_const_result1440.peel, ptr %sunkaddr3567, align 8
%328 = load <2 x i64>, ptr %sunkaddr3568, align 8
%dst_val14443052.peel = extractelement <2 x i64> %328, i64 0
%src_val14573053.peel = extractelement <2 x i64> %328, i64 1
%mul_result1446.peel = mul i64 %dst_val14443052.peel, %src_val14313051.peel
store i64 %mul_result1446.peel, ptr %sunkaddr3568, align 8
%rotated1452.peel = tail call i64 @llvm.fshl.i64(i64 %src_val14313051.peel, i64 %src_val14313051.peel, i64 19)
store i64 %rotated1452.peel, ptr %sunkaddr3563, align 8
%sub_result1458.peel = sub i64 %umulh_result_641349, %src_val14573053.peel
%dst_val_1281464.peel = zext i64 %mul_result1415.peel to i128
%src_val_1281465.peel = zext i64 %sub_result1458.peel to i128
%mul_result_1281466.peel = mul nuw i128 %src_val_1281465.peel, %dst_val_1281464.peel
%umulh_result1467.peel = lshr i128 %mul_result_1281466.peel, 64
%umulh_result_641468.peel = trunc i128 %umulh_result1467.peel to i64
%rotated1475.peel = tail call i64 @llvm.fshl.i64(i64 %sub_result1458.peel, i64 %sub_result1458.peel, i64 40)
%mul_result1481.peel = mul i64 %rotated1475.peel, %src_val14573053.peel
store i64 %mul_result1481.peel, ptr %sunkaddr3567, align 8
%329 = load <2 x i64>, ptr %sunkaddr3563, align 8
%src_val14863054.peel = extractelement <2 x i64> %329, i64 0
%src_val14933055.peel = extractelement <2 x i64> %329, i64 1
%shifted1487.peel = shl i64 %src_val14863054.peel, 2
%add_shift_result1488.peel = add i64 %shifted1487.peel, %rotated1475.peel
%xor_result1494.peel = xor i64 %src_val14933055.peel, %mul_result1432.peel
store i64 %xor_result1494.peel, ptr %0, align 8
%mul_result1500.peel = mul i64 %add_shift_result1488.peel, %mul_result1446.peel
%330 = and i128 %mul_result_1281466.peel, 2785369829205332561877794816
%branch_condition1506.peel = icmp ne i128 %330, 0
%or.cond3345.not.peel = select i1 %branch_taken1320.lcssa, i1 true, i1 %branch_condition1506.peel
br i1 %or.cond3345.not.peel, label %continue_273, label %continue_273.loopexit
continue_273.loopexit: ; preds = %continue_241
%sunkaddr3569 = getelementptr i8, ptr %0, i64 16
%331 = load <2 x i64>, ptr %sunkaddr3569, align 8
%src_val14203046 = extractelement <2 x i64> %331, i64 0
%src_val14143047 = extractelement <2 x i64> %331, i64 1
%shifted1421 = shl i64 %src_val14203046, 2
%add_shift_result1422 = add i64 %shifted1421, %src_val14143047
%sunkaddr3570 = getelementptr i8, ptr %0, i64 24
store i64 %add_shift_result1422, ptr %sunkaddr3570, align 8
%add_const_result1426 = add i64 %xor_result1494.peel, %const3445
store i64 %add_const_result1426, ptr %0, align 8
%332 = load <2 x i64>, ptr %0, align 8
%dst_val14303048 = extractelement <2 x i64> %332, i64 0
%dst_val14353049 = extractelement <2 x i64> %332, i64 1
%333 = load <2 x i64>, ptr %sunkaddr3569, align 8
%dst_val14393050 = extractelement <2 x i64> %333, i64 0
%src_val14313051 = extractelement <2 x i64> %333, i64 1
%mul_result1432 = mul i64 %src_val14313051, %dst_val14303048
%xor_const_result1436 = xor i64 %dst_val14353049, %const3410
%334 = insertelement <2 x i64> poison, i64 %mul_result1432, i64 0
%335 = insertelement <2 x i64> %334, i64 %xor_const_result1436, i64 1
store <2 x i64> %335, ptr %0, align 8
%add_const_result1440 = add i64 %dst_val14393050, %const3419
store i64 %add_const_result1440, ptr %sunkaddr3569, align 8
%sunkaddr3571 = getelementptr i8, ptr %0, i64 8
%336 = load <2 x i64>, ptr %sunkaddr3571, align 8
%dst_val14443052 = extractelement <2 x i64> %336, i64 0
%src_val14573053 = extractelement <2 x i64> %336, i64 1
%mul_result1446 = mul i64 %dst_val14443052, %src_val14313051
store i64 %mul_result1446, ptr %sunkaddr3571, align 8
%rotated1452 = tail call i64 @llvm.fshl.i64(i64 %src_val14313051, i64 %src_val14313051, i64 19)
store i64 %rotated1452, ptr %sunkaddr3570, align 8
%sub_result1458 = sub i64 %mul_result1500.peel, %src_val14573053
%rotated1475 = tail call i64 @llvm.fshl.i64(i64 %sub_result1458, i64 %sub_result1458, i64 40)
%mul_result1481 = mul i64 %rotated1475, %src_val14573053
store i64 %mul_result1481, ptr %sunkaddr3569, align 8
%337 = load <2 x i64>, ptr %sunkaddr3570, align 8
%src_val14933055 = extractelement <2 x i64> %337, i64 1
%xor_result1494 = xor i64 %src_val14933055, %mul_result1432
store i64 %xor_result1494, ptr %0, align 8
%src_val14863054 = extractelement <2 x i64> %337, i64 0
%shifted1487 = shl i64 %src_val14863054, 2
%add_shift_result1488 = add i64 %shifted1487, %rotated1475
%mul_result1500 = mul i64 %add_shift_result1488, %mul_result1446
%src_val_1281465 = zext i64 %sub_result1458 to i128
%mul_result1415 = mul i64 %src_val14143047, %umulh_result_641468.peel
%dst_val_1281464 = zext i64 %mul_result1415 to i128
%mul_result_1281466 = mul nuw i128 %src_val_1281465, %dst_val_1281464
%umulh_result1467 = lshr i128 %mul_result_1281466, 64
%umulh_result_641468 = trunc i128 %umulh_result1467 to i64
br label %continue_273
continue_273: ; preds = %continue_273.loopexit, %continue_241
%branch_taken1502.lcssa = phi i1 [ %branch_taken1320.lcssa, %continue_241 ], [ true, %continue_273.loopexit ]
%umulh_result_641468.lcssa = phi i64 [ %umulh_result_641468.peel, %continue_241 ], [ %umulh_result_641468, %continue_273.loopexit ]
%src_val14933055.lcssa = phi i64 [ %src_val14933055.peel, %continue_241 ], [ %src_val14933055, %continue_273.loopexit ]
%mul_result1500.lcssa = phi i64 [ %mul_result1500.peel, %continue_241 ], [ %mul_result1500, %continue_273.loopexit ]
%const3464 = bitcast i64 -458166810 to i64
%const3450 = bitcast i64 -1217308286 to i64
%const3448 = bitcast i64 -1511638542 to i64
%const3418 = bitcast i64 929970112 to i64
%const3416 = bitcast i64 659289387 to i64
%sunkaddr3572 = getelementptr i8, ptr %0, i64 16
%338 = load <2 x i64>, ptr %sunkaddr3572, align 8
%dst_val15233034 = extractelement <2 x i64> %338, i64 0
%dst_val15093035 = extractelement <2 x i64> %338, i64 1
%339 = load <2 x i64>, ptr %0, align 8
%src_val15103032 = extractelement <2 x i64> %339, i64 0
%dst_val15143033 = extractelement <2 x i64> %339, i64 1
%mul_result1511 = mul i64 %src_val15103032, %dst_val15093035
%sunkaddr3573 = getelementptr i8, ptr %0, i64 24
store i64 %mul_result1511, ptr %sunkaddr3573, align 8
%xor_const_result1515 = xor i64 %dst_val15143033, 1874562385
%sunkaddr3574 = getelementptr i8, ptr %0, i64 8
store i64 %xor_const_result1515, ptr %sunkaddr3574, align 8
%add_const_result1519 = add i64 %src_val14933055.lcssa, -701184834
%sunkaddr3575 = getelementptr i8, ptr %0, i64 32
store i64 %add_const_result1519, ptr %sunkaddr3575, align 8
%340 = load <2 x i64>, ptr %0, align 8
%dst_val15343036 = extractelement <2 x i64> %340, i64 0
%src_val15243037 = extractelement <2 x i64> %340, i64 1
%dst_val_1281525 = zext i64 %dst_val15233034 to i128
%src_val_1281526 = zext i64 %src_val15243037 to i128
%mul_result_1281527 = mul nuw i128 %src_val_1281526, %dst_val_1281525
%umulh_result1528 = lshr i128 %mul_result_1281527, 64
%umulh_result_641529 = trunc i128 %umulh_result1528 to i64
store i64 %umulh_result_641529, ptr %sunkaddr3572, align 8
%xor_result1536 = xor i64 %dst_val15343036, %add_shift_result1357
store i64 %xor_result1536, ptr %0, align 8
%341 = load <2 x i64>, ptr %0, align 8
%dst_val15403038 = extractelement <2 x i64> %341, i64 0
%src_val15413039 = extractelement <2 x i64> %341, i64 1
%mul_result1542 = mul i64 %dst_val15403038, %src_val15413039
store i64 %mul_result1542, ptr %0, align 8
%xor_const_result1546 = xor i64 %umulh_result_641468.lcssa, -1203858252
%sunkaddr3576 = getelementptr i8, ptr %0, i64 40
store i64 %xor_const_result1546, ptr %sunkaddr3576, align 8
%add_const_result1550 = add i64 %mul_result1500.lcssa, 722177058
%sunkaddr3577 = getelementptr i8, ptr %0, i64 56
store i64 %add_const_result1550, ptr %sunkaddr3577, align 8
%mul_result1556 = mul i64 %src_val15413039, %xor_const_result1546
store i64 %mul_result1556, ptr %sunkaddr3574, align 8
%342 = load <2 x i64>, ptr %sunkaddr3576, align 8
%dst_val15593040 = extractelement <2 x i64> %342, i64 0
%dst_val15653041 = extractelement <2 x i64> %342, i64 1
%rotated1562 = tail call i64 @llvm.fshl.i64(i64 %dst_val15593040, i64 %dst_val15593040, i64 22)
%add_const_result1566 = add i64 %dst_val15653041, 1096143823
%343 = insertelement <2 x i64> poison, i64 %rotated1562, i64 0
%344 = insertelement <2 x i64> %343, i64 %add_const_result1566, i64 1
store <2 x i64> %344, ptr %sunkaddr3576, align 8
%345 = load <2 x i64>, ptr %sunkaddr3575, align 8
%src_val15713042 = extractelement <2 x i64> %345, i64 0
%dst_val15703043 = extractelement <2 x i64> %345, i64 1
%mul_result1572 = mul i64 %dst_val15703043, %src_val15713042
store i64 %mul_result1572, ptr %sunkaddr3576, align 8
%sunkaddr3578 = getelementptr i8, ptr %0, i64 48
%346 = load <2 x i64>, ptr %sunkaddr3578, align 8
%dst_val15793044 = extractelement <2 x i64> %346, i64 0
%dst_val15753045 = extractelement <2 x i64> %346, i64 1
%xor_const_result1576 = xor i64 %dst_val15753045, -469132237
%rotated1582 = tail call i64 @llvm.fshl.i64(i64 %dst_val15793044, i64 %dst_val15793044, i64 38)
%mul_result1588 = mul i64 %xor_const_result1576, %src_val15713042
%347 = insertelement <2 x i64> poison, i64 %rotated1582, i64 0
%348 = insertelement <2 x i64> %347, i64 %mul_result1588, i64 1
store <2 x i64> %348, ptr %sunkaddr3578, align 8
%349 = load <2 x i64>, ptr %sunkaddr3572, align 8
%dst_val15923018.peel = extractelement <2 x i64> %349, i64 0
%dst_val15983019.peel = extractelement <2 x i64> %349, i64 1
%350 = load <2 x i64>, ptr %0, align 8
%src_val15933016.peel = extractelement <2 x i64> %350, i64 0
%dst_val16033017.peel = extractelement <2 x i64> %350, i64 1
%mul_result1594.peel = mul i64 %src_val15933016.peel, %dst_val15923018.peel
%xor_result1600.peel = xor i64 %dst_val15983019.peel, %rotated1582
store i64 %xor_result1600.peel, ptr %sunkaddr3573, align 8
%rotated1606.peel = tail call i64 @llvm.fshl.i64(i64 %dst_val16033017.peel, i64 %dst_val16033017.peel, i64 29)
%351 = insertelement <2 x i64> poison, i64 %rotated1606.peel, i64 0
%352 = insertelement <2 x i64> %351, i64 %mul_result1594.peel, i64 1
store <2 x i64> %352, ptr %sunkaddr3574, align 8
%353 = load <2 x i64>, ptr %0, align 8
%dst_val16313020.peel = extractelement <2 x i64> %353, i64 0
%dst_val16103021.peel = extractelement <2 x i64> %353, i64 1
%354 = load <2 x i64>, ptr %sunkaddr3576, align 8
%dst_val16153024.peel = extractelement <2 x i64> %354, i64 0
%src_val16113025.peel = extractelement <2 x i64> %354, i64 1
%mul_result1612.peel = mul i64 %src_val16113025.peel, %dst_val16103021.peel
store i64 %mul_result1612.peel, ptr %sunkaddr3574, align 8
%xor_const_result1616.peel = xor i64 %dst_val16153024.peel, %const3450
store i64 %xor_const_result1616.peel, ptr %sunkaddr3576, align 8
%355 = load <2 x i64>, ptr %sunkaddr3573, align 8
%dst_val16263022.peel = extractelement <2 x i64> %355, i64 0
%mul_result1628.peel = mul i64 %dst_val16263022.peel, %mul_result1588
store i64 %mul_result1628.peel, ptr %sunkaddr3573, align 8
%add_const_result1632.peel = add i64 %dst_val16313020.peel, %const3418
store i64 %add_const_result1632.peel, ptr %0, align 8
%356 = load <2 x i64>, ptr %sunkaddr3575, align 8
%src_val16433028.peel = extractelement <2 x i64> %356, i64 0
%dst_val16363029.peel = extractelement <2 x i64> %356, i64 1
%sub_result1638.peel = sub i64 %dst_val16363029.peel, %src_val16433028.peel
%357 = extractelement <2 x i64> %355, i64 1
%358 = xor i64 %357, %rotated1582
%dst_val_1281644.peel = sext i64 %358 to i128
%src_val_1281645.peel = sext i64 %src_val16433028.peel to i128
%mul_result_1281646.peel = mul nsw i128 %src_val_1281645.peel, %dst_val_1281644.peel
%smulh_result1647.peel = lshr i128 %mul_result_1281646.peel, 64
%smulh_result_641648.peel = trunc i128 %smulh_result1647.peel to i64
%xor_const_result1653.peel = xor i64 %sub_result1638.peel, %const3448
%359 = insertelement <2 x i64> poison, i64 %xor_const_result1653.peel, i64 0
%360 = insertelement <2 x i64> %359, i64 %smulh_result_641648.peel, i64 1
store <2 x i64> %360, ptr %sunkaddr3576, align 8
%361 = load <2 x i64>, ptr %sunkaddr3575, align 8
%dst_val16663030.peel = extractelement <2 x i64> %361, i64 0
%dst_val16573031.peel = extractelement <2 x i64> %361, i64 1
%mul_result1659.peel = mul i64 %dst_val16573031.peel, %dst_val16663030.peel
%add_const_result1663.peel = add i64 %mul_result1588, %const3464
store i64 %add_const_result1663.peel, ptr %sunkaddr3577, align 8
%xor_const_result1667.peel = xor i64 %dst_val16663030.peel, %const3416
%362 = insertelement <2 x i64> poison, i64 %xor_const_result1667.peel, i64 0
%363 = insertelement <2 x i64> %362, i64 %mul_result1659.peel, i64 1
store <2 x i64> %363, ptr %sunkaddr3575, align 8
%mul_result1673.peel = mul i64 %xor_const_result1667.peel, %mul_result1594.peel
store i64 %mul_result1673.peel, ptr %sunkaddr3575, align 8
%364 = and i128 %mul_result_1281646.peel, 45939328719308498315247616
%branch_condition1679.peel = icmp ne i128 %364, 0
%or.cond3346.not.peel = select i1 %branch_taken1502.lcssa, i1 true, i1 %branch_condition1679.peel
br i1 %or.cond3346.not.peel, label %continue_305, label %continue_305.loopexit
continue_305.loopexit: ; preds = %continue_273
%sunkaddr3579 = getelementptr i8, ptr %0, i64 48
%.pre3306.peel = load <2 x i64>, ptr %sunkaddr3579, align 8
%365 = extractelement <2 x i64> %.pre3306.peel, i64 1
%sunkaddr3580 = getelementptr i8, ptr %0, i64 16
%366 = load <2 x i64>, ptr %sunkaddr3580, align 8
%dst_val15923018 = extractelement <2 x i64> %366, i64 0
%dst_val15983019 = extractelement <2 x i64> %366, i64 1
%367 = load <2 x i64>, ptr %0, align 8
%src_val15933016 = extractelement <2 x i64> %367, i64 0
%dst_val16033017 = extractelement <2 x i64> %367, i64 1
%mul_result1594 = mul i64 %src_val15933016, %dst_val15923018
%xor_result1600 = xor i64 %dst_val15983019, %smulh_result_641648.peel
%sunkaddr3581 = getelementptr i8, ptr %0, i64 24
store i64 %xor_result1600, ptr %sunkaddr3581, align 8
%rotated1606 = tail call i64 @llvm.fshl.i64(i64 %dst_val16033017, i64 %dst_val16033017, i64 29)
%368 = insertelement <2 x i64> poison, i64 %rotated1606, i64 0
%369 = insertelement <2 x i64> %368, i64 %mul_result1594, i64 1
%sunkaddr3582 = getelementptr i8, ptr %0, i64 8
store <2 x i64> %369, ptr %sunkaddr3582, align 8
%370 = load <2 x i64>, ptr %0, align 8
%dst_val16313020 = extractelement <2 x i64> %370, i64 0
%dst_val16103021 = extractelement <2 x i64> %370, i64 1
%sunkaddr3583 = getelementptr i8, ptr %0, i64 40
%371 = load <2 x i64>, ptr %sunkaddr3583, align 8
%dst_val16153024 = extractelement <2 x i64> %371, i64 0
%src_val16113025 = extractelement <2 x i64> %371, i64 1
%mul_result1612 = mul i64 %src_val16113025, %dst_val16103021
store i64 %mul_result1612, ptr %sunkaddr3582, align 8
%xor_const_result1616 = xor i64 %dst_val16153024, %const3450
store i64 %xor_const_result1616, ptr %sunkaddr3583, align 8
%372 = load <2 x i64>, ptr %sunkaddr3581, align 8
%dst_val16263022 = extractelement <2 x i64> %372, i64 0
%shift3367 = shufflevector <2 x i64> %.pre3306.peel, <2 x i64> poison, <2 x i32> <i32 poison, i32 0>
%373 = xor <2 x i64> %372, %shift3367
%mul_result1628 = mul i64 %dst_val16263022, %365
store i64 %mul_result1628, ptr %sunkaddr3581, align 8
%add_const_result1632 = add i64 %dst_val16313020, %const3418
store i64 %add_const_result1632, ptr %0, align 8
%sunkaddr3584 = getelementptr i8, ptr %0, i64 32
%374 = load <2 x i64>, ptr %sunkaddr3584, align 8
%src_val16433028 = extractelement <2 x i64> %374, i64 0
%dst_val16363029 = extractelement <2 x i64> %374, i64 1
%sub_result1638 = sub i64 %dst_val16363029, %src_val16433028
%375 = extractelement <2 x i64> %373, i64 1
%dst_val_1281644 = sext i64 %375 to i128
%src_val_1281645 = sext i64 %src_val16433028 to i128
%mul_result_1281646 = mul nsw i128 %src_val_1281645, %dst_val_1281644
%smulh_result1647 = lshr i128 %mul_result_1281646, 64
%smulh_result_641648 = trunc i128 %smulh_result1647 to i64
%xor_const_result1653 = xor i64 %sub_result1638, %const3448
%376 = insertelement <2 x i64> poison, i64 %xor_const_result1653, i64 0
%377 = insertelement <2 x i64> %376, i64 %smulh_result_641648, i64 1
store <2 x i64> %377, ptr %sunkaddr3583, align 8
%378 = load <2 x i64>, ptr %sunkaddr3584, align 8
%dst_val16663030 = extractelement <2 x i64> %378, i64 0
%dst_val16573031 = extractelement <2 x i64> %378, i64 1
%mul_result1659 = mul i64 %dst_val16573031, %dst_val16663030
%add_const_result1663 = add i64 %365, %const3464
%sunkaddr3585 = getelementptr i8, ptr %0, i64 56
store i64 %add_const_result1663, ptr %sunkaddr3585, align 8
%xor_const_result1667 = xor i64 %dst_val16663030, %const3416
%379 = insertelement <2 x i64> poison, i64 %xor_const_result1667, i64 0
%380 = insertelement <2 x i64> %379, i64 %mul_result1659, i64 1
store <2 x i64> %380, ptr %sunkaddr3584, align 8
%mul_result1673 = mul i64 %xor_const_result1667, %mul_result1594
br label %continue_305
continue_305: ; preds = %continue_305.loopexit, %continue_273
%branch_taken1675.lcssa = phi i1 [ %branch_taken1502.lcssa, %continue_273 ], [ true, %continue_305.loopexit ]
%mul_result1673.lcssa = phi i64 [ %mul_result1673.peel, %continue_273 ], [ %mul_result1673, %continue_305.loopexit ]
%const3461 = bitcast i64 -655282117 to i64
%const3444 = bitcast i64 -1724733175 to i64
%const3434 = bitcast i64 1703691470 to i64
%381 = load <2 x i64>, ptr %0, align 8
%dst_val16823002 = extractelement <2 x i64> %381, i64 0
%src_val16833003 = extractelement <2 x i64> %381, i64 1
%mul_result1684 = mul i64 %dst_val16823002, %src_val16833003
%sunkaddr3586 = getelementptr i8, ptr %0, i64 8
%382 = load <2 x i64>, ptr %sunkaddr3586, align 8
%dst_val16913004 = extractelement <2 x i64> %382, i64 0
%dst_val16873005 = extractelement <2 x i64> %382, i64 1
%add_const_result1688 = add i64 %dst_val16873005, 197415339
%sunkaddr3587 = getelementptr i8, ptr %0, i64 16
store i64 %add_const_result1688, ptr %sunkaddr3587, align 8
%xor_const_result1692 = xor i64 %dst_val16913004, -99593571
%383 = insertelement <2 x i64> poison, i64 %mul_result1684, i64 0
%384 = insertelement <2 x i64> %383, i64 %xor_const_result1692, i64 1
store <2 x i64> %384, ptr %0, align 8
%385 = load <2 x i64>, ptr %sunkaddr3586, align 8
%dst_val16963006 = extractelement <2 x i64> %385, i64 0
%src_val16973007 = extractelement <2 x i64> %385, i64 1
%dst_val_1281698 = zext i64 %dst_val16963006 to i128
%src_val_1281699 = zext i64 %src_val16973007 to i128
%mul_result_1281700 = mul nuw i128 %dst_val_1281698, %src_val_1281699
%umulh_result1701 = lshr i128 %mul_result_1281700, 64
%umulh_result_641702 = trunc i128 %umulh_result1701 to i64
%sunkaddr3588 = getelementptr i8, ptr %0, i64 48
%386 = load <2 x i64>, ptr %sunkaddr3588, align 8
%dst_val17133010 = extractelement <2 x i64> %386, i64 0
%dst_val17073011 = extractelement <2 x i64> %386, i64 1
%sub_result1709 = sub i64 %dst_val17073011, %dst_val17133010
%mul_result1715 = mul i64 %dst_val17133010, %mul_result1673.lcssa
%387 = insertelement <2 x i64> poison, i64 %mul_result1715, i64 0
%388 = insertelement <2 x i64> %387, i64 %sub_result1709, i64 1
store <2 x i64> %388, ptr %sunkaddr3588, align 8
%389 = load <2 x i64>, ptr %sunkaddr3587, align 8
%dst_val17273008 = extractelement <2 x i64> %389, i64 0
%390 = shufflevector <2 x i64> %389, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%391 = insertelement <2 x i64> %390, i64 %mul_result1673.lcssa, i64 1
%392 = xor <2 x i64> %391, <i64 -235449189, i64 poison>
%393 = add <2 x i64> %391, <i64 poison, i64 1139225584>
%394 = shufflevector <2 x i64> %392, <2 x i64> %393, <2 x i32> <i32 0, i32 3>
%sunkaddr3589 = getelementptr i8, ptr %0, i64 24
store <2 x i64> %394, ptr %sunkaddr3589, align 8
%mul_result1729 = mul i64 %dst_val17273008, %sub_result1709
store i64 %mul_result1729, ptr %sunkaddr3587, align 8
%add_const_result1733 = add i64 %mul_result1684, -485271711
%sunkaddr3590 = getelementptr i8, ptr %0, i64 32
%395 = load <2 x i64>, ptr %sunkaddr3590, align 8
%shift3368 = shufflevector <2 x i64> %395, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%396 = sub <2 x i64> %395, %shift3368
%sub_result1739 = extractelement <2 x i64> %396, i64 0
store i64 %sub_result1739, ptr %sunkaddr3590, align 8
%397 = load <2 x i64>, ptr %sunkaddr3589, align 8
%dst_val17523014 = extractelement <2 x i64> %397, i64 0
%dst_val17433015 = extractelement <2 x i64> %397, i64 1
%mul_result1745 = mul i64 %dst_val17433015, %sub_result1709
%398 = extractelement <2 x i64> %395, i64 1
%add_const_result1749 = add i64 %398, 516620353
%sunkaddr3591 = getelementptr i8, ptr %0, i64 40
store i64 %add_const_result1749, ptr %sunkaddr3591, align 8
%rotated1755 = tail call i64 @llvm.fshl.i64(i64 %dst_val17523014, i64 %dst_val17523014, i64 1)
%399 = insertelement <2 x i64> poison, i64 %rotated1755, i64 0
%400 = insertelement <2 x i64> %399, i64 %mul_result1745, i64 1
store <2 x i64> %400, ptr %sunkaddr3589, align 8
%mul_result1761 = mul i64 %sub_result1709, %add_const_result1733
store i64 %mul_result1761, ptr %0, align 8
%mul_result1767.peel = mul i64 %sub_result1709, %umulh_result_641702
store i64 %mul_result1767.peel, ptr %sunkaddr3586, align 8
%401 = load <2 x i64>, ptr %sunkaddr3591, align 8
%dst_val17772994.peel = extractelement <2 x i64> %401, i64 0
%dst_val17702995.peel = extractelement <2 x i64> %401, i64 1
%rotated1773.peel = tail call i64 @llvm.fshl.i64(i64 %dst_val17702995.peel, i64 %dst_val17702995.peel, i64 61)
%sub_result1779.peel = sub i64 %dst_val17772994.peel, %sub_result1709
%402 = insertelement <2 x i64> poison, i64 %sub_result1779.peel, i64 0
%403 = insertelement <2 x i64> %402, i64 %rotated1773.peel, i64 1
store <2 x i64> %403, ptr %sunkaddr3591, align 8
%404 = load <2 x i64>, ptr %sunkaddr3590, align 8
%src_val17842999.peel = extractelement <2 x i64> %404, i64 1
%mul_result1785.peel = mul i64 %src_val17842999.peel, %rotated1755
%add_const_result1789.peel = add i64 %sub_result1709, %const3444
%xor_const_result1793.peel = xor i64 %mul_result1729, -547023705
%mul_result1799.peel = mul i64 %src_val17842999.peel, %rotated1773.peel
%xor_const_result1803.peel = xor i64 %sub_result1779.peel, %const3461
%405 = load <2 x i64>, ptr %0, align 8
%dst_val18132997.peel = extractelement <2 x i64> %405, i64 1
%406 = xor <2 x i64> %405, %404
%407 = insertelement <2 x i64> %406, i64 %xor_const_result1803.peel, i64 1
store <2 x i64> %407, ptr %sunkaddr3590, align 8
%dst_val_1281815.peel = sext i64 %dst_val18132997.peel to i128
%src_val_1281816.peel = sext i64 %add_const_result1789.peel to i128
%mul_result_1281817.peel = mul nsw i128 %dst_val_1281815.peel, %src_val_1281816.peel
%smulh_result1818.peel = lshr i128 %mul_result_1281817.peel, 64
%smulh_result_641819.peel = trunc i128 %smulh_result1818.peel to i64
%408 = insertelement <2 x i64> poison, i64 %smulh_result_641819.peel, i64 0
%409 = insertelement <2 x i64> %408, i64 %xor_const_result1793.peel, i64 1
store <2 x i64> %409, ptr %sunkaddr3586, align 8
%410 = extractelement <2 x i64> %405, i64 0
%xor_result1826.peel = xor i64 %410, %add_const_result1789.peel
%411 = insertelement <2 x i64> poison, i64 %mul_result1799.peel, i64 0
%412 = insertelement <2 x i64> %411, i64 %xor_result1826.peel, i64 1
store <2 x i64> %412, ptr %sunkaddr3588, align 8
%mul_result1832.peel = mul i64 %xor_result1826.peel, %xor_const_result1793.peel
%sunkaddr3592 = getelementptr i8, ptr %0, i64 56
store i64 %mul_result1832.peel, ptr %sunkaddr3592, align 8
%add_const_result1836.peel = add i64 %410, %const3434
%413 = extractelement <2 x i64> %406, i64 0
%rotated1842.peel = tail call i64 @llvm.fshl.i64(i64 %413, i64 %413, i64 58)
store i64 %rotated1842.peel, ptr %sunkaddr3590, align 8
%mul_result1848.peel = mul i64 %rotated1842.peel, %add_const_result1836.peel
store i64 %mul_result1848.peel, ptr %0, align 8
%414 = and i128 %mul_result_1281817.peel, 39615593594998307800651661312
%branch_condition1854.peel = icmp ne i128 %414, 0
%or.cond3347.not.peel = select i1 %branch_taken1675.lcssa, i1 true, i1 %branch_condition1854.peel
br i1 %or.cond3347.not.peel, label %continue_337, label %continue_337.loopexit
continue_337.loopexit: ; preds = %continue_305
%mul_result1767 = mul i64 %mul_result1832.peel, %smulh_result_641819.peel
%sunkaddr3593 = getelementptr i8, ptr %0, i64 8
store i64 %mul_result1767, ptr %sunkaddr3593, align 8
%sunkaddr3594 = getelementptr i8, ptr %0, i64 40
%415 = load <2 x i64>, ptr %sunkaddr3594, align 8
%dst_val17772994 = extractelement <2 x i64> %415, i64 0
%dst_val17702995 = extractelement <2 x i64> %415, i64 1
%rotated1773 = tail call i64 @llvm.fshl.i64(i64 %dst_val17702995, i64 %dst_val17702995, i64 61)
%sub_result1779 = sub i64 %dst_val17772994, %mul_result1832.peel
%416 = insertelement <2 x i64> poison, i64 %sub_result1779, i64 0
%417 = insertelement <2 x i64> %416, i64 %rotated1773, i64 1
store <2 x i64> %417, ptr %sunkaddr3594, align 8
%sunkaddr3595 = getelementptr i8, ptr %0, i64 32
%418 = load <2 x i64>, ptr %sunkaddr3595, align 8
%src_val17842999 = extractelement <2 x i64> %418, i64 1
%add_const_result1789 = add i64 %mul_result1832.peel, %const3444
%mul_result1799 = mul i64 %src_val17842999, %rotated1773
%xor_const_result1803 = xor i64 %sub_result1779, %const3461
%419 = load <2 x i64>, ptr %0, align 8
%dst_val18132997 = extractelement <2 x i64> %419, i64 1
%420 = xor <2 x i64> %419, %418
%421 = insertelement <2 x i64> %420, i64 %xor_const_result1803, i64 1
store <2 x i64> %421, ptr %sunkaddr3595, align 8
%dst_val_1281815 = sext i64 %dst_val18132997 to i128
%src_val_1281816 = sext i64 %add_const_result1789 to i128
%mul_result_1281817 = mul nsw i128 %dst_val_1281815, %src_val_1281816
%smulh_result1818 = lshr i128 %mul_result_1281817, 64
%smulh_result_641819 = trunc i128 %smulh_result1818 to i64
%422 = insertelement <2 x i64> poison, i64 %smulh_result_641819, i64 0
%423 = insertelement <2 x i64> %422, i64 %mul_result1729, i64 1
store <2 x i64> %423, ptr %sunkaddr3593, align 8
%424 = extractelement <2 x i64> %419, i64 0
%xor_result1826 = xor i64 %424, %add_const_result1789
%425 = insertelement <2 x i64> poison, i64 %mul_result1799, i64 0
%426 = insertelement <2 x i64> %425, i64 %xor_result1826, i64 1
%sunkaddr3596 = getelementptr i8, ptr %0, i64 48
store <2 x i64> %426, ptr %sunkaddr3596, align 8
%mul_result1832 = mul i64 %xor_result1826, %mul_result1729
%sunkaddr3597 = getelementptr i8, ptr %0, i64 56
store i64 %mul_result1832, ptr %sunkaddr3597, align 8
%add_const_result1836 = add i64 %424, %const3434
%427 = extractelement <2 x i64> %420, i64 0
%rotated1842 = tail call i64 @llvm.fshl.i64(i64 %427, i64 %427, i64 58)
store i64 %rotated1842, ptr %sunkaddr3595, align 8
%mul_result1848 = mul i64 %rotated1842, %add_const_result1836
store i64 %mul_result1848, ptr %0, align 8
%mul_result1785 = mul i64 %src_val17842999, %mul_result1785.peel
br label %continue_337
continue_337: ; preds = %continue_337.loopexit, %continue_305
%branch_taken1850.lcssa = phi i1 [ %branch_taken1675.lcssa, %continue_305 ], [ true, %continue_337.loopexit ]
%mul_result1785.lcssa = phi i64 [ %mul_result1785.peel, %continue_305 ], [ %mul_result1785, %continue_337.loopexit ]
%xor_const_result1803.lcssa = phi i64 [ %xor_const_result1803.peel, %continue_305 ], [ %xor_const_result1803, %continue_337.loopexit ]
%const3432 = bitcast i64 1675938361 to i64
%const3417 = bitcast i64 757264618 to i64
%const3415 = bitcast i64 460961199 to i64
%sunkaddr3598 = getelementptr i8, ptr %0, i64 24
store i64 %mul_result1785.lcssa, ptr %sunkaddr3598, align 8
%sunkaddr3599 = getelementptr i8, ptr %0, i64 16
%428 = load <2 x i64>, ptr %sunkaddr3599, align 8
%dst_val18572980 = extractelement <2 x i64> %428, i64 0
%mul_result1859 = mul i64 %dst_val18572980, %xor_const_result1803.lcssa
%sunkaddr3600 = getelementptr i8, ptr %0, i64 40
%429 = load <2 x i64>, ptr %sunkaddr3600, align 8
%dst_val18622983 = extractelement <2 x i64> %429, i64 1
%add_const_result1863 = add i64 %dst_val18622983, 495253495
%sunkaddr3601 = getelementptr i8, ptr %0, i64 48
store i64 %add_const_result1863, ptr %sunkaddr3601, align 8
%shift3369 = shufflevector <2 x i64> %429, <2 x i64> poison, <2 x i32> <i32 poison, i32 0>
%430 = sub <2 x i64> %428, %shift3369
%431 = insertelement <2 x i64> %430, i64 %mul_result1859, i64 0
store <2 x i64> %431, ptr %sunkaddr3599, align 8
%432 = load <2 x i64>, ptr %sunkaddr3598, align 8
%dst_val18732986 = extractelement <2 x i64> %432, i64 0
%dst_val18832987 = extractelement <2 x i64> %432, i64 1
%433 = load <2 x i64>, ptr %sunkaddr3601, align 8
%src_val18742988 = extractelement <2 x i64> %433, i64 0
%src_val18892989 = extractelement <2 x i64> %433, i64 1
%dst_val_1281875 = zext i64 %dst_val18732986 to i128
%src_val_1281876 = zext i64 %src_val18742988 to i128
%mul_result_1281877 = mul nuw i128 %src_val_1281876, %dst_val_1281875
%umulh_result1878 = lshr i128 %mul_result_1281877, 64
%umulh_result_641879 = trunc i128 %umulh_result1878 to i64
%xor_const_result1884 = xor i64 %dst_val18832987, -417845687
%434 = insertelement <2 x i64> poison, i64 %umulh_result_641879, i64 0
%435 = insertelement <2 x i64> %434, i64 %xor_const_result1884, i64 1
store <2 x i64> %435, ptr %sunkaddr3598, align 8
%436 = load <2 x i64>, ptr %0, align 8
%dst_val18932984 = extractelement <2 x i64> %436, i64 0
%dst_val18882985 = extractelement <2 x i64> %436, i64 1
%mul_result1890 = mul i64 %dst_val18882985, %src_val18892989
%xor_const_result1894 = xor i64 %dst_val18932984, 835562357
%437 = insertelement <2 x i64> poison, i64 %xor_const_result1894, i64 0
%438 = insertelement <2 x i64> %437, i64 %mul_result1890, i64 1
store <2 x i64> %438, ptr %0, align 8
%xor_result1900 = xor i64 %src_val18892989, %xor_const_result1884
%sunkaddr3602 = getelementptr i8, ptr %0, i64 32
store i64 %xor_result1900, ptr %sunkaddr3602, align 8
%439 = load <2 x i64>, ptr %sunkaddr3602, align 8
%dst_val19042990 = extractelement <2 x i64> %439, i64 0
%src_val19052991 = extractelement <2 x i64> %439, i64 1
%mul_result1906 = mul i64 %dst_val19042990, %src_val19052991
%xor_const_result1910 = xor i64 %src_val18892989, -729360251
%sunkaddr3603 = getelementptr i8, ptr %0, i64 56
store i64 %xor_const_result1910, ptr %sunkaddr3603, align 8
%440 = load <2 x i64>, ptr %sunkaddr3600, align 8
%dst_val19132992 = extractelement <2 x i64> %440, i64 0
%dst_val19202993 = extractelement <2 x i64> %440, i64 1
%rotated1916 = tail call i64 @llvm.fshl.i64(i64 %dst_val19132992, i64 %dst_val19132992, i64 7)
%441 = insertelement <2 x i64> poison, i64 %mul_result1906, i64 0
%442 = insertelement <2 x i64> %441, i64 %rotated1916, i64 1
store <2 x i64> %442, ptr %sunkaddr3602, align 8
%mul_result1922 = mul i64 %rotated1916, %dst_val19202993
%add_const_result1926 = add i64 %xor_const_result1894, 2018671038
%xor_result1932 = xor i64 %rotated1916, %xor_const_result1910
%443 = insertelement <2 x i64> poison, i64 %mul_result1922, i64 0
%444 = insertelement <2 x i64> %443, i64 %xor_result1932, i64 1
store <2 x i64> %444, ptr %sunkaddr3601, align 8
%mul_result1938 = mul i64 %xor_result1932, %mul_result1859
store i64 %mul_result1938, ptr %sunkaddr3603, align 8
%mul_result1944.peel = mul i64 %add_const_result1926, %rotated1916
%445 = load <2 x i64>, ptr %sunkaddr3599, align 8
%dst_val19472966.peel = extractelement <2 x i64> %445, i64 0
%dst_val19512967.peel = extractelement <2 x i64> %445, i64 1
%add_const_result1948.peel = add i64 %dst_val19472966.peel, %const3417
%rotated1954.peel = tail call i64 @llvm.fshl.i64(i64 %dst_val19512967.peel, i64 %dst_val19512967.peel, i64 20)
%446 = insertelement <2 x i64> poison, i64 %add_const_result1948.peel, i64 0
%447 = insertelement <2 x i64> %446, i64 %rotated1954.peel, i64 1
store <2 x i64> %447, ptr %sunkaddr3599, align 8
%448 = load <2 x i64>, ptr %sunkaddr3600, align 8
%dst_val19582968.peel = extractelement <2 x i64> %448, i64 0
%src_val19592969.peel = extractelement <2 x i64> %448, i64 1
%mul_result1960.peel = mul i64 %dst_val19582968.peel, %src_val19592969.peel
store i64 %mul_result1960.peel, ptr %sunkaddr3600, align 8
%449 = load <2 x i64>, ptr %sunkaddr3598, align 8
%dst_val19632972.peel = extractelement <2 x i64> %449, i64 0
%src_val19692973.peel = extractelement <2 x i64> %449, i64 1
%xor_const_result1964.peel = xor i64 %dst_val19632972.peel, %const3432
store i64 %xor_const_result1964.peel, ptr %sunkaddr3598, align 8
%sunkaddr3604 = getelementptr i8, ptr %0, i64 8
%450 = load <2 x i64>, ptr %sunkaddr3604, align 8
%dst_val19682970.peel = extractelement <2 x i64> %450, i64 0
%dst_val19752971.peel = extractelement <2 x i64> %450, i64 1
%shifted1970.peel = shl i64 %src_val19692973.peel, 3
%add_shift_result1971.peel = add i64 %dst_val19682970.peel, %shifted1970.peel
store i64 %add_shift_result1971.peel, ptr %sunkaddr3604, align 8
%mul_result1977.peel = mul i64 %dst_val19752971.peel, %src_val19592969.peel
store i64 %mul_result1977.peel, ptr %sunkaddr3599, align 8
%451 = load <2 x i64>, ptr %sunkaddr3601, align 8
%dst_val19802974.peel = extractelement <2 x i64> %451, i64 0
%dst_val19872975.peel = extractelement <2 x i64> %451, i64 1
%rotated1983.peel = tail call i64 @llvm.fshl.i64(i64 %dst_val19802974.peel, i64 %dst_val19802974.peel, i64 37)
%shifted1989.peel = shl i64 %add_shift_result1971.peel, 1
%add_shift_result1990.peel = add i64 %dst_val19872975.peel, %shifted1989.peel
%dst_val_1281996.peel = zext i64 %add_shift_result1990.peel to i128
%src_val_1281997.peel = zext i64 %xor_const_result1964.peel to i128
%mul_result_1281998.peel = mul nuw i128 %dst_val_1281996.peel, %src_val_1281997.peel
%umulh_result1999.peel = lshr i128 %mul_result_1281998.peel, 64
%umulh_result_642000.peel = trunc i128 %umulh_result1999.peel to i64
store i64 %umulh_result_642000.peel, ptr %sunkaddr3603, align 8
%xor_result2007.peel = xor i64 %xor_const_result1964.peel, %mul_result1944.peel
store i64 %xor_result2007.peel, ptr %0, align 8
%452 = load <2 x i64>, ptr %0, align 8
%dst_val20112976.peel = extractelement <2 x i64> %452, i64 0
%src_val20122977.peel = extractelement <2 x i64> %452, i64 1
%mul_result2013.peel = mul i64 %dst_val20112976.peel, %src_val20122977.peel
%453 = load <2 x i64>, ptr %sunkaddr3598, align 8
%dst_val20162978.peel = extractelement <2 x i64> %453, i64 0
%src_val20222979.peel = extractelement <2 x i64> %453, i64 1
%add_const_result2017.peel = add i64 %dst_val20162978.peel, %const3415
store i64 %add_const_result2017.peel, ptr %sunkaddr3598, align 8
%xor_result2023.peel = xor i64 %src_val20222979.peel, %src_val20122977.peel
%454 = insertelement <2 x i64> poison, i64 %mul_result2013.peel, i64 0
%455 = insertelement <2 x i64> %454, i64 %xor_result2023.peel, i64 1
store <2 x i64> %455, ptr %0, align 8
%mul_result2029.peel = mul i64 %src_val20222979.peel, %rotated1983.peel
store i64 %mul_result2029.peel, ptr %sunkaddr3601, align 8
%456 = and i128 %mul_result_1281998.peel, 762662186983447702011904
%branch_condition2035.peel = icmp ne i128 %456, 0
%or.cond3348.not.peel = select i1 %branch_taken1850.lcssa, i1 true, i1 %branch_condition2035.peel
br i1 %or.cond3348.not.peel, label %continue_369, label %continue_369.loopexit
continue_369.loopexit: ; preds = %continue_337
%mul_result1944 = mul i64 %mul_result2013.peel, %mul_result1960.peel
%sunkaddr3605 = getelementptr i8, ptr %0, i64 16
%457 = load <2 x i64>, ptr %sunkaddr3605, align 8
%dst_val19472966 = extractelement <2 x i64> %457, i64 0
%dst_val19512967 = extractelement <2 x i64> %457, i64 1
%add_const_result1948 = add i64 %dst_val19472966, %const3417
%rotated1954 = tail call i64 @llvm.fshl.i64(i64 %dst_val19512967, i64 %dst_val19512967, i64 20)
%458 = insertelement <2 x i64> poison, i64 %add_const_result1948, i64 0
%459 = insertelement <2 x i64> %458, i64 %rotated1954, i64 1
store <2 x i64> %459, ptr %sunkaddr3605, align 8
%sunkaddr3606 = getelementptr i8, ptr %0, i64 40
%460 = load <2 x i64>, ptr %sunkaddr3606, align 8
%dst_val19582968 = extractelement <2 x i64> %460, i64 0
%src_val19592969 = extractelement <2 x i64> %460, i64 1
%mul_result1960 = mul i64 %dst_val19582968, %src_val19592969
store i64 %mul_result1960, ptr %sunkaddr3606, align 8
%sunkaddr3607 = getelementptr i8, ptr %0, i64 24
%461 = load <2 x i64>, ptr %sunkaddr3607, align 8
%dst_val19632972 = extractelement <2 x i64> %461, i64 0
%src_val19692973 = extractelement <2 x i64> %461, i64 1
%xor_const_result1964 = xor i64 %dst_val19632972, %const3432
store i64 %xor_const_result1964, ptr %sunkaddr3607, align 8
%sunkaddr3608 = getelementptr i8, ptr %0, i64 8
%462 = load <2 x i64>, ptr %sunkaddr3608, align 8
%dst_val19682970 = extractelement <2 x i64> %462, i64 0
%dst_val19752971 = extractelement <2 x i64> %462, i64 1
%shifted1970 = shl i64 %src_val19692973, 3
%add_shift_result1971 = add i64 %dst_val19682970, %shifted1970
store i64 %add_shift_result1971, ptr %sunkaddr3608, align 8
%mul_result1977 = mul i64 %dst_val19752971, %src_val19592969
store i64 %mul_result1977, ptr %sunkaddr3605, align 8
%sunkaddr3609 = getelementptr i8, ptr %0, i64 48
%463 = load <2 x i64>, ptr %sunkaddr3609, align 8
%dst_val19802974 = extractelement <2 x i64> %463, i64 0
%dst_val19872975 = extractelement <2 x i64> %463, i64 1
%rotated1983 = tail call i64 @llvm.fshl.i64(i64 %dst_val19802974, i64 %dst_val19802974, i64 37)
%shifted1989 = shl i64 %add_shift_result1971, 1
%add_shift_result1990 = add i64 %dst_val19872975, %shifted1989
%dst_val_1281996 = zext i64 %add_shift_result1990 to i128
%src_val_1281997 = zext i64 %xor_const_result1964 to i128
%mul_result_1281998 = mul nuw i128 %dst_val_1281996, %src_val_1281997
%umulh_result1999 = lshr i128 %mul_result_1281998, 64
%umulh_result_642000 = trunc i128 %umulh_result1999 to i64
%xor_result2007 = xor i64 %xor_const_result1964, %mul_result1944
store i64 %xor_result2007, ptr %0, align 8
%464 = load <2 x i64>, ptr %0, align 8
%dst_val20112976 = extractelement <2 x i64> %464, i64 0
%src_val20122977 = extractelement <2 x i64> %464, i64 1
%mul_result2013 = mul i64 %dst_val20112976, %src_val20122977
%465 = load <2 x i64>, ptr %sunkaddr3607, align 8
%dst_val20162978 = extractelement <2 x i64> %465, i64 0
%src_val20222979 = extractelement <2 x i64> %465, i64 1
%add_const_result2017 = add i64 %dst_val20162978, %const3415
store i64 %add_const_result2017, ptr %sunkaddr3607, align 8
%xor_result2023 = xor i64 %src_val20222979, %src_val20122977
%466 = insertelement <2 x i64> poison, i64 %mul_result2013, i64 0
%467 = insertelement <2 x i64> %466, i64 %xor_result2023, i64 1
store <2 x i64> %467, ptr %0, align 8
%mul_result2029 = mul i64 %src_val20222979, %rotated1983
store i64 %mul_result2029, ptr %sunkaddr3609, align 8
br label %continue_369
continue_369: ; preds = %continue_369.loopexit, %continue_337
%branch_taken2031.lcssa = phi i1 [ %branch_taken1850.lcssa, %continue_337 ], [ true, %continue_369.loopexit ]
%umulh_result_642000.lcssa = phi i64 [ %umulh_result_642000.peel, %continue_337 ], [ %umulh_result_642000, %continue_369.loopexit ]
%mul_result2013.lcssa = phi i64 [ %mul_result2013.peel, %continue_337 ], [ %mul_result2013, %continue_369.loopexit ]
%xor_result2023.lcssa = phi i64 [ %xor_result2023.peel, %continue_337 ], [ %xor_result2023, %continue_369.loopexit ]
%mul_result2029.lcssa = phi i64 [ %mul_result2029.peel, %continue_337 ], [ %mul_result2029, %continue_369.loopexit ]
%const3465 = bitcast i64 -439194500 to i64
%const3449 = bitcast i64 -1450987274 to i64
%const3443 = bitcast i64 -1898443851 to i64
%const3437 = bitcast i64 1829778069 to i64
%const3427 = bitcast i64 1398683415 to i64
%sunkaddr3610 = getelementptr i8, ptr %0, i64 24
%468 = load <2 x i64>, ptr %sunkaddr3610, align 8
%dst_val20382952 = extractelement <2 x i64> %468, i64 0
%src_val20392953 = extractelement <2 x i64> %468, i64 1
%mul_result2040 = mul i64 %dst_val20382952, %src_val20392953
%sunkaddr3611 = getelementptr i8, ptr %0, i64 32
%469 = load <2 x i64>, ptr %sunkaddr3611, align 8
%dst_val20482954 = extractelement <2 x i64> %469, i64 0
%dst_val20432955 = extractelement <2 x i64> %469, i64 1
%xor_const_result2044 = xor i64 %dst_val20432955, -185546114
%xor_result2050 = xor i64 %dst_val20482954, %xor_result2023.lcssa
%sunkaddr3612 = getelementptr i8, ptr %0, i64 8
%470 = load <2 x i64>, ptr %sunkaddr3612, align 8
%src_val20662950 = extractelement <2 x i64> %470, i64 0
%dst_val20542951 = extractelement <2 x i64> %470, i64 1
%dst_val_1282056 = zext i64 %dst_val20542951 to i128
%src_val_1282057 = zext i64 %src_val20662950 to i128
%mul_result_1282058 = mul nuw i128 %dst_val_1282056, %src_val_1282057
%umulh_result2059 = lshr i128 %mul_result_1282058, 64
%umulh_result_642060 = trunc i128 %umulh_result2059 to i64
%471 = insertelement <2 x i64> poison, i64 %umulh_result_642060, i64 0
%472 = insertelement <2 x i64> %471, i64 %mul_result2040, i64 1
%sunkaddr3613 = getelementptr i8, ptr %0, i64 16
store <2 x i64> %472, ptr %sunkaddr3613, align 8
%shifted2067 = shl i64 %src_val20662950, 3
%add_shift_result2068 = add i64 %shifted2067, %umulh_result_642000.lcssa
%sunkaddr3614 = getelementptr i8, ptr %0, i64 56
store i64 %add_shift_result2068, ptr %sunkaddr3614, align 8
%mul_result2074 = mul i64 %xor_result2050, %mul_result2029.lcssa
store i64 %mul_result2074, ptr %sunkaddr3611, align 8
%sunkaddr3615 = getelementptr i8, ptr %0, i64 48
%473 = load <2 x i64>, ptr %sunkaddr3615, align 8
%474 = insertelement <2 x i64> <i64 poison, i64 -1478920565>, i64 %mul_result2013.lcssa, i64 0
%475 = xor <2 x i64> %473, %474
store <2 x i64> %475, ptr %sunkaddr3615, align 8
%mul_result2090 = mul i64 %xor_const_result2044, %mul_result2013.lcssa
%sunkaddr3616 = getelementptr i8, ptr %0, i64 40
store i64 %mul_result2090, ptr %sunkaddr3616, align 8
%xor_const_result2094 = xor i64 %xor_result2023.lcssa, 1476342230
%476 = extractelement <2 x i64> %475, i64 0
%sub_result2100 = sub i64 %mul_result2013.lcssa, %476
%477 = extractelement <2 x i64> %475, i64 1
%mul_result2106 = mul i64 %477, %xor_const_result2094
%xor_const_result2110 = xor i64 %sub_result2100, -887879992
%478 = insertelement <2 x i64> poison, i64 %xor_const_result2110, i64 0
%479 = insertelement <2 x i64> %478, i64 %mul_result2106, i64 1
store <2 x i64> %479, ptr %0, align 8
%shifted2116 = shl i64 %mul_result2040, 3
%add_shift_result2117 = add i64 %477, %shifted2116
%mul_result2123 = mul i64 %mul_result2074, %umulh_result_642060
store i64 %mul_result2123, ptr %sunkaddr3613, align 8
%mul_result2129.peel = mul i64 %add_shift_result2117, %xor_const_result2110
%480 = load <2 x i64>, ptr %sunkaddr3611, align 8
%dst_val21392936.peel = extractelement <2 x i64> %480, i64 0
%src_val21342937.peel = extractelement <2 x i64> %480, i64 1
%shifted2135.peel = shl i64 %src_val21342937.peel, 2
%add_shift_result2136.peel = add i64 %shifted2135.peel, %xor_const_result2110
store i64 %add_shift_result2136.peel, ptr %0, align 8
%xor_const_result2140.peel = xor i64 %dst_val21392936.peel, %const3437
store i64 %xor_const_result2140.peel, ptr %sunkaddr3611, align 8
%481 = load <2 x i64>, ptr %sunkaddr3611, align 8
%dst_val21442940.peel = extractelement <2 x i64> %481, i64 0
%src_val21452941.peel = extractelement <2 x i64> %481, i64 1
%mul_result2146.peel = mul i64 %dst_val21442940.peel, %src_val21452941.peel
store i64 %mul_result2146.peel, ptr %sunkaddr3611, align 8
%xor_const_result2150.peel = xor i64 %476, %const3465
%482 = load <2 x i64>, ptr %0, align 8
%src_val21552938.peel = extractelement <2 x i64> %482, i64 0
%dst_val21542939.peel = extractelement <2 x i64> %482, i64 1
%shifted2156.peel = shl i64 %src_val21552938.peel, 1
%add_shift_result2157.peel = add i64 %shifted2156.peel, %dst_val21542939.peel
store i64 %add_shift_result2157.peel, ptr %sunkaddr3612, align 8
%483 = load <2 x i64>, ptr %0, align 8
%src_val21622942.peel = extractelement <2 x i64> %483, i64 0
%mul_result2163.peel = mul i64 %src_val21622942.peel, %xor_const_result2150.peel
%484 = load <2 x i64>, ptr %sunkaddr3613, align 8
%dst_val21662944.peel = extractelement <2 x i64> %484, i64 0
%xor_const_result2167.peel = xor i64 %dst_val21662944.peel, %const3443
%485 = add <2 x i64> %484, %483
%add_shift_result2174.peel = extractelement <2 x i64> %485, i64 1
%dst_val_1282180.peel = zext i64 %xor_const_result2167.peel to i128
%mul_result_1282182.peel = mul nuw i128 %dst_val_1282180.peel, %dst_val_1282180.peel
%umulh_result2183.peel = lshr i128 %mul_result_1282182.peel, 64
%umulh_result_642184.peel = trunc i128 %umulh_result2183.peel to i64
%rotated2191.peel = tail call i64 @llvm.fshl.i64(i64 %add_shift_result2174.peel, i64 %add_shift_result2174.peel, i64 14)
%486 = insertelement <2 x i64> poison, i64 %rotated2191.peel, i64 0
%487 = insertelement <2 x i64> %486, i64 %umulh_result_642184.peel, i64 1
store <2 x i64> %487, ptr %sunkaddr3612, align 8
%488 = load <2 x i64>, ptr %0, align 8
%src_val21962948.peel = extractelement <2 x i64> %488, i64 0
%dst_val21952949.peel = extractelement <2 x i64> %488, i64 1
%mul_result2197.peel = mul i64 %dst_val21952949.peel, %src_val21962948.peel
store i64 %mul_result2197.peel, ptr %sunkaddr3612, align 8
%xor_const_result2201.peel = xor i64 %mul_result2129.peel, %const3427
%489 = extractelement <2 x i64> %484, i64 1
%add_const_result2205.peel = add i64 %489, %const3449
store i64 %add_const_result2205.peel, ptr %sunkaddr3610, align 8
%mul_result2211.peel = mul i64 %src_val21962948.peel, %xor_const_result2201.peel
%490 = and i128 %mul_result_1282182.peel, 19807054943239485596998041600
%branch_condition2217.peel = icmp ne i128 %490, 0
%or.cond3349.not.peel = select i1 %branch_taken2031.lcssa, i1 true, i1 %branch_condition2217.peel
br i1 %or.cond3349.not.peel, label %continue_401, label %continue_401.loopexit
continue_401.loopexit: ; preds = %continue_369
%sunkaddr3617 = getelementptr i8, ptr %0, i64 32
%491 = load <2 x i64>, ptr %sunkaddr3617, align 8
%dst_val21392936 = extractelement <2 x i64> %491, i64 0
%src_val21342937 = extractelement <2 x i64> %491, i64 1
%shifted2135 = shl i64 %src_val21342937, 2
%add_shift_result2136 = add i64 %shifted2135, %src_val21962948.peel
store i64 %add_shift_result2136, ptr %0, align 8
%xor_const_result2140 = xor i64 %dst_val21392936, %const3437
store i64 %xor_const_result2140, ptr %sunkaddr3617, align 8
%492 = load <2 x i64>, ptr %sunkaddr3617, align 8
%dst_val21442940 = extractelement <2 x i64> %492, i64 0
%src_val21452941 = extractelement <2 x i64> %492, i64 1
%mul_result2146 = mul i64 %dst_val21442940, %src_val21452941
store i64 %mul_result2146, ptr %sunkaddr3617, align 8
%493 = load <2 x i64>, ptr %0, align 8
%src_val21552938 = extractelement <2 x i64> %493, i64 0
%dst_val21542939 = extractelement <2 x i64> %493, i64 1
%shifted2156 = shl i64 %src_val21552938, 1
%add_shift_result2157 = add i64 %shifted2156, %dst_val21542939
%sunkaddr3618 = getelementptr i8, ptr %0, i64 8
store i64 %add_shift_result2157, ptr %sunkaddr3618, align 8
%494 = load <2 x i64>, ptr %0, align 8
%sunkaddr3619 = getelementptr i8, ptr %0, i64 16
%495 = load <2 x i64>, ptr %sunkaddr3619, align 8
%dst_val21662944 = extractelement <2 x i64> %495, i64 0
%xor_const_result2167 = xor i64 %dst_val21662944, %const3443
%496 = add <2 x i64> %495, %494
%add_shift_result2174 = extractelement <2 x i64> %496, i64 1
%dst_val_1282180 = zext i64 %xor_const_result2167 to i128
%mul_result_1282182 = mul nuw i128 %dst_val_1282180, %dst_val_1282180
%umulh_result2183 = lshr i128 %mul_result_1282182, 64
%umulh_result_642184 = trunc i128 %umulh_result2183 to i64
%rotated2191 = tail call i64 @llvm.fshl.i64(i64 %add_shift_result2174, i64 %add_shift_result2174, i64 14)
%497 = insertelement <2 x i64> poison, i64 %rotated2191, i64 0
%498 = insertelement <2 x i64> %497, i64 %umulh_result_642184, i64 1
store <2 x i64> %498, ptr %sunkaddr3618, align 8
%499 = load <2 x i64>, ptr %0, align 8
%src_val21962948 = extractelement <2 x i64> %499, i64 0
%dst_val21952949 = extractelement <2 x i64> %499, i64 1
%mul_result2197 = mul i64 %dst_val21952949, %src_val21962948
store i64 %mul_result2197, ptr %sunkaddr3618, align 8
%500 = extractelement <2 x i64> %495, i64 1
%add_const_result2205 = add i64 %500, %const3449
%sunkaddr3620 = getelementptr i8, ptr %0, i64 24
store i64 %add_const_result2205, ptr %sunkaddr3620, align 8
%mul_result2129 = mul i64 %mul_result2211.peel, %src_val21962948.peel
%xor_const_result2201 = xor i64 %mul_result2129, %const3427
%mul_result2211 = mul i64 %src_val21962948, %xor_const_result2201
%src_val21622942 = extractelement <2 x i64> %494, i64 0
%xor_const_result2150 = xor i64 %mul_result2163.peel, %const3465
%mul_result2163 = mul i64 %src_val21622942, %xor_const_result2150
br label %continue_401
continue_401: ; preds = %continue_401.loopexit, %continue_369
%branch_taken2213.lcssa = phi i1 [ %branch_taken2031.lcssa, %continue_369 ], [ true, %continue_401.loopexit ]
%mul_result2163.lcssa = phi i64 [ %mul_result2163.peel, %continue_369 ], [ %mul_result2163, %continue_401.loopexit ]
%umulh_result_642184.lcssa = phi i64 [ %umulh_result_642184.peel, %continue_369 ], [ %umulh_result_642184, %continue_401.loopexit ]
%src_val21962948.lcssa = phi i64 [ %src_val21962948.peel, %continue_369 ], [ %src_val21962948, %continue_401.loopexit ]
%mul_result2211.lcssa = phi i64 [ %mul_result2211.peel, %continue_369 ], [ %mul_result2211, %continue_401.loopexit ]
%const3460 = bitcast i64 -675106646 to i64
%const3458 = bitcast i64 -700593286 to i64
%const3435 = bitcast i64 1708672014 to i64
%sunkaddr3621 = getelementptr i8, ptr %0, i64 48
store i64 %mul_result2163.lcssa, ptr %sunkaddr3621, align 8
%sunkaddr3622 = getelementptr i8, ptr %0, i64 24
%501 = load <2 x i64>, ptr %sunkaddr3622, align 8
%dst_val22202918 = extractelement <2 x i64> %501, i64 0
%src_val22392919 = extractelement <2 x i64> %501, i64 1
%sunkaddr3623 = getelementptr i8, ptr %0, i64 32
%502 = load <2 x i64>, ptr %sunkaddr3623, align 8
%dst_val22492920 = extractelement <2 x i64> %502, i64 0
%src_val22212921 = extractelement <2 x i64> %502, i64 1
%mul_result2222 = mul i64 %src_val22212921, %dst_val22202918
store i64 %mul_result2222, ptr %sunkaddr3622, align 8
%sunkaddr3624 = getelementptr i8, ptr %0, i64 40
%503 = load <2 x i64>, ptr %sunkaddr3624, align 8
%shift3370 = shufflevector <2 x i64> %503, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%504 = sub <2 x i64> %503, %shift3370
%sub_result2228 = extractelement <2 x i64> %504, i64 0
store i64 %sub_result2228, ptr %sunkaddr3624, align 8
%505 = extractelement <2 x i64> %503, i64 1
%xor_result2234 = xor i64 %505, %src_val21962948.lcssa
store i64 %xor_result2234, ptr %0, align 8
%dst_val_1282240 = sext i64 %505 to i128
%src_val_1282241 = sext i64 %src_val22392919 to i128
%mul_result_1282242 = mul nsw i128 %dst_val_1282240, %src_val_1282241
%smulh_result2243 = lshr i128 %mul_result_1282242, 64
%smulh_result_642244 = trunc i128 %smulh_result2243 to i64
store i64 %smulh_result_642244, ptr %sunkaddr3621, align 8
%shifted2251 = shl i64 %xor_result2234, 3
%add_shift_result2252 = add i64 %shifted2251, %dst_val22492920
store i64 %add_shift_result2252, ptr %sunkaddr3623, align 8
%506 = load <2 x i64>, ptr %sunkaddr3623, align 8
%dst_val22562928 = extractelement <2 x i64> %506, i64 0
%dst_val22722929 = extractelement <2 x i64> %506, i64 1
%mul_result2258 = mul i64 %dst_val22562928, %umulh_result_642184.lcssa
%507 = load <2 x i64>, ptr %0, align 8
%xor_const_result2268 = xor i64 %mul_result2211.lcssa, -29099099
%sunkaddr3625 = getelementptr i8, ptr %0, i64 56
store i64 %xor_const_result2268, ptr %sunkaddr3625, align 8
%sunkaddr3626 = getelementptr i8, ptr %0, i64 16
%508 = load <2 x i64>, ptr %sunkaddr3626, align 8
%dst_val22812926 = extractelement <2 x i64> %508, i64 0
%src_val22732927 = extractelement <2 x i64> %508, i64 1
%mul_result2274 = mul i64 %src_val22732927, %dst_val22722929
%509 = insertelement <2 x i64> poison, i64 %mul_result2258, i64 0
%510 = insertelement <2 x i64> %509, i64 %mul_result2274, i64 1
store <2 x i64> %510, ptr %sunkaddr3623, align 8
%511 = insertelement <2 x i64> <i64 poison, i64 -127660648>, i64 %umulh_result_642184.lcssa, i64 0
%512 = xor <2 x i64> %507, %511
store <2 x i64> %512, ptr %0, align 8
%add_const_result2282 = add i64 %dst_val22812926, -2056568168
store i64 %add_const_result2282, ptr %sunkaddr3626, align 8
%sunkaddr3627 = getelementptr i8, ptr %0, i64 8
%513 = load <2 x i64>, ptr %sunkaddr3627, align 8
%dst_val22972932 = extractelement <2 x i64> %513, i64 0
%src_val22872933 = extractelement <2 x i64> %513, i64 1
%514 = extractelement <2 x i64> %512, i64 0
%mul_result2288 = mul i64 %src_val22872933, %514
store i64 %mul_result2288, ptr %0, align 8
%515 = load <2 x i64>, ptr %sunkaddr3621, align 8
%dst_val23022934 = extractelement <2 x i64> %515, i64 0
%516 = xor <2 x i64> %515, %512
%xor_result2294 = extractelement <2 x i64> %516, i64 1
store i64 %xor_result2294, ptr %sunkaddr3625, align 8
%add_const_result2298 = add i64 %dst_val22972932, -1090666698
store i64 %add_const_result2298, ptr %sunkaddr3627, align 8
%mul_result2304 = mul i64 %xor_result2294, %dst_val23022934
store i64 %mul_result2304, ptr %sunkaddr3621, align 8
%shifted2340 = shl i64 %xor_result2294, 3
%src_val_1282362 = zext i64 %xor_result2294 to i128
%517 = load <2 x i64>, ptr %sunkaddr3627, align 8
%src_val23092904.peel = extractelement <2 x i64> %517, i64 0
%dst_val23082905.peel = extractelement <2 x i64> %517, i64 1
%mul_result2310.peel = mul i64 %dst_val23082905.peel, %src_val23092904.peel
store i64 %mul_result2310.peel, ptr %sunkaddr3626, align 8
%518 = load <2 x i64>, ptr %sunkaddr3622, align 8
%src_val23212906.peel = extractelement <2 x i64> %518, i64 0
%dst_val23132907.peel = extractelement <2 x i64> %518, i64 1
%rotated2316.peel = tail call i64 @llvm.fshl.i64(i64 %dst_val23132907.peel, i64 %dst_val23132907.peel, i64 24)
%sub_result2322.peel = sub i64 %mul_result2274, %src_val23212906.peel
%519 = load <2 x i64>, ptr %0, align 8
%dst_val23312908.peel = extractelement <2 x i64> %519, i64 0
%src_val23272909.peel = extractelement <2 x i64> %519, i64 1
%mul_result2328.peel = mul i64 %src_val23272909.peel, %rotated2316.peel
%520 = insertelement <2 x i64> poison, i64 %mul_result2328.peel, i64 0
%521 = insertelement <2 x i64> %520, i64 %sub_result2322.peel, i64 1
store <2 x i64> %521, ptr %sunkaddr3623, align 8
%rotated2334.peel = tail call i64 @llvm.fshl.i64(i64 %dst_val23312908.peel, i64 %dst_val23312908.peel, i64 32)
%add_shift_result2341.peel = add i64 %src_val23272909.peel, %shifted2340
%mul_result2347.peel = mul i64 %add_shift_result2341.peel, %src_val23212906.peel
%xor_const_result2351.peel = xor i64 %rotated2334.peel, %const3460
%522 = insertelement <2 x i64> poison, i64 %xor_const_result2351.peel, i64 0
%523 = insertelement <2 x i64> %522, i64 %mul_result2347.peel, i64 1
store <2 x i64> %523, ptr %0, align 8
%524 = load <2 x i64>, ptr %sunkaddr3624, align 8
%dst_val23542912.peel = extractelement <2 x i64> %524, i64 0
%dst_val23592913.peel = extractelement <2 x i64> %524, i64 1
%add_const_result2355.peel = add i64 %dst_val23542912.peel, %const3435
%dst_val_1282361.peel = zext i64 %dst_val23592913.peel to i128
%mul_result_1282363.peel = mul nuw i128 %dst_val_1282361.peel, %src_val_1282362
%umulh_result2364.peel = lshr i128 %mul_result_1282363.peel, 64
%umulh_result_642365.peel = trunc i128 %umulh_result2364.peel to i64
%525 = insertelement <2 x i64> poison, i64 %add_const_result2355.peel, i64 0
%526 = insertelement <2 x i64> %525, i64 %umulh_result_642365.peel, i64 1
store <2 x i64> %526, ptr %sunkaddr3624, align 8
%add_const_result2370.peel = add i64 %xor_const_result2351.peel, %const3458
%mul_result2376.peel = mul i64 %add_const_result2370.peel, %src_val23212906.peel
store i64 %mul_result2376.peel, ptr %0, align 8
%527 = load <2 x i64>, ptr %sunkaddr3622, align 8
%528 = add <2 x i64> %527, <i64 -495192780, i64 poison>
%529 = xor <2 x i64> %527, <i64 poison, i64 -72287871>
%530 = shufflevector <2 x i64> %528, <2 x i64> %529, <2 x i32> <i32 0, i32 3>
store <2 x i64> %530, ptr %sunkaddr3622, align 8
%531 = extractelement <2 x i64> %528, i64 0
%532 = extractelement <2 x i64> %529, i64 1
%mul_result2390.peel = mul i64 %531, %532
store i64 %mul_result2390.peel, ptr %sunkaddr3622, align 8
%533 = and i128 %mul_result_1282363.peel, 1547425934550440881682382848
%branch_condition2396.peel = icmp ne i128 %533, 0
%or.cond3350.not.peel = select i1 %branch_taken2213.lcssa, i1 true, i1 %branch_condition2396.peel
br i1 %or.cond3350.not.peel, label %continue_433, label %continue_433.loopexit
continue_433.loopexit: ; preds = %continue_401
%534 = zext i64 %xor_result2294 to i128
%sunkaddr3628 = getelementptr i8, ptr %0, i64 8
%535 = load <2 x i64>, ptr %sunkaddr3628, align 8
%src_val23092904 = extractelement <2 x i64> %535, i64 0
%dst_val23082905 = extractelement <2 x i64> %535, i64 1
%mul_result2310 = mul i64 %dst_val23082905, %src_val23092904
%sunkaddr3629 = getelementptr i8, ptr %0, i64 16
store i64 %mul_result2310, ptr %sunkaddr3629, align 8
%sunkaddr3630 = getelementptr i8, ptr %0, i64 24
%536 = load <2 x i64>, ptr %sunkaddr3630, align 8
%src_val23212906 = extractelement <2 x i64> %536, i64 0
%dst_val23132907 = extractelement <2 x i64> %536, i64 1
%rotated2316 = tail call i64 @llvm.fshl.i64(i64 %dst_val23132907, i64 %dst_val23132907, i64 24)
%sub_result2322 = sub i64 %add_const_result2355.peel, %src_val23212906
%537 = load <2 x i64>, ptr %0, align 8
%dst_val23312908 = extractelement <2 x i64> %537, i64 0
%src_val23272909 = extractelement <2 x i64> %537, i64 1
%mul_result2328 = mul i64 %src_val23272909, %rotated2316
%538 = insertelement <2 x i64> poison, i64 %mul_result2328, i64 0
%539 = insertelement <2 x i64> %538, i64 %sub_result2322, i64 1
%sunkaddr3631 = getelementptr i8, ptr %0, i64 32
store <2 x i64> %539, ptr %sunkaddr3631, align 8
%rotated2334 = tail call i64 @llvm.fshl.i64(i64 %dst_val23312908, i64 %dst_val23312908, i64 32)
%add_shift_result2341 = add i64 %src_val23272909, %shifted2340
%mul_result2347 = mul i64 %add_shift_result2341, %src_val23212906
%xor_const_result2351 = xor i64 %rotated2334, %const3460
%540 = insertelement <2 x i64> poison, i64 %xor_const_result2351, i64 0
%541 = insertelement <2 x i64> %540, i64 %mul_result2347, i64 1
store <2 x i64> %541, ptr %0, align 8
%sunkaddr3632 = getelementptr i8, ptr %0, i64 40
%542 = load <2 x i64>, ptr %sunkaddr3632, align 8
%dst_val23542912 = extractelement <2 x i64> %542, i64 0
%dst_val23592913 = extractelement <2 x i64> %542, i64 1
%add_const_result2355 = add i64 %dst_val23542912, %const3435
%dst_val_1282361 = zext i64 %dst_val23592913 to i128
%mul_result_1282363 = mul nuw i128 %dst_val_1282361, %534
%umulh_result2364 = lshr i128 %mul_result_1282363, 64
%umulh_result_642365 = trunc i128 %umulh_result2364 to i64
%543 = insertelement <2 x i64> poison, i64 %add_const_result2355, i64 0
%544 = insertelement <2 x i64> %543, i64 %umulh_result_642365, i64 1
store <2 x i64> %544, ptr %sunkaddr3632, align 8
%add_const_result2370 = add i64 %xor_const_result2351, %const3458
%mul_result2376 = mul i64 %add_const_result2370, %src_val23212906
store i64 %mul_result2376, ptr %0, align 8
%545 = load <2 x i64>, ptr %sunkaddr3630, align 8
%546 = add <2 x i64> %545, <i64 -495192780, i64 poison>
%547 = xor <2 x i64> %545, <i64 poison, i64 -72287871>
%548 = shufflevector <2 x i64> %546, <2 x i64> %547, <2 x i32> <i32 0, i32 3>
store <2 x i64> %548, ptr %sunkaddr3630, align 8
%549 = extractelement <2 x i64> %546, i64 0
%550 = extractelement <2 x i64> %547, i64 1
%mul_result2390 = mul i64 %549, %550
br label %continue_433
continue_433: ; preds = %continue_433.loopexit, %continue_401
%branch_taken2392.lcssa = phi i1 [ %branch_taken2213.lcssa, %continue_401 ], [ true, %continue_433.loopexit ]
%mul_result2390.lcssa = phi i64 [ %mul_result2390.peel, %continue_401 ], [ %mul_result2390, %continue_433.loopexit ]
%const3431 = bitcast i64 1675575300 to i64
%const3414 = bitcast i64 444540273 to i64
%const = bitcast i64 99144357 to i64
%sunkaddr3633 = getelementptr i8, ptr %0, i64 32
%551 = load <2 x i64>, ptr %sunkaddr3633, align 8
%dst_val24052894 = extractelement <2 x i64> %551, i64 0
%dst_val23992895 = extractelement <2 x i64> %551, i64 1
%552 = load <2 x i64>, ptr %0, align 8
%src_val24002891 = extractelement <2 x i64> %552, i64 1
%mul_result2401 = mul i64 %src_val24002891, %dst_val23992895
%sunkaddr3634 = getelementptr i8, ptr %0, i64 48
%553 = load <2 x i64>, ptr %sunkaddr3634, align 8
%src_val24172896 = extractelement <2 x i64> %553, i64 0
%src_val24062897 = extractelement <2 x i64> %553, i64 1
%shifted2407 = shl i64 %src_val24062897, 2
%add_shift_result2408 = add i64 %shifted2407, %dst_val24052894
%554 = insertelement <2 x i64> poison, i64 %add_shift_result2408, i64 0
%555 = insertelement <2 x i64> %554, i64 %mul_result2401, i64 1
store <2 x i64> %555, ptr %sunkaddr3633, align 8
%sunkaddr3635 = getelementptr i8, ptr %0, i64 8
%556 = load <2 x i64>, ptr %sunkaddr3635, align 8
%dst_val24162893 = extractelement <2 x i64> %556, i64 1
%dst_val_1282418 = zext i64 %dst_val24162893 to i128
%src_val_1282419 = zext i64 %src_val24172896 to i128
%mul_result_1282420 = mul nuw i128 %dst_val_1282418, %src_val_1282419
%umulh_result2421 = lshr i128 %mul_result_1282420, 64
%umulh_result_642422 = trunc i128 %umulh_result2421 to i64
%sunkaddr3636 = getelementptr i8, ptr %0, i64 16
store i64 %umulh_result_642422, ptr %sunkaddr3636, align 8
%557 = shufflevector <2 x i64> %552, <2 x i64> %556, <2 x i32> <i32 0, i32 2>
%558 = xor <2 x i64> %557, <i64 -317616500, i64 738058690>
store <2 x i64> %558, ptr %0, align 8
%mul_result2433 = mul i64 %add_shift_result2408, %src_val24062897
store i64 %mul_result2433, ptr %sunkaddr3633, align 8
%xor_const_result2437 = xor i64 %src_val24062897, -471439597
%sunkaddr3637 = getelementptr i8, ptr %0, i64 56
store i64 %xor_const_result2437, ptr %sunkaddr3637, align 8
%559 = xor <2 x i64> %558, %553
%xor_result2443 = extractelement <2 x i64> %559, i64 0
%560 = load <2 x i64>, ptr %sunkaddr3634, align 8
%dst_val24642902 = extractelement <2 x i64> %560, i64 0
%dst_val24472903 = extractelement <2 x i64> %560, i64 1
%mul_result2449 = mul i64 %dst_val24472903, %mul_result2390.lcssa
%sunkaddr3638 = getelementptr i8, ptr %0, i64 40
%561 = load <2 x i64>, ptr %sunkaddr3638, align 8
%dst_val24592900 = extractelement <2 x i64> %561, i64 0
%src_val24542901 = extractelement <2 x i64> %561, i64 1
%shifted2455 = shl i64 %src_val24542901, 1
%add_shift_result2456 = add i64 %shifted2455, %xor_result2443
%add_const_result2460 = add i64 %dst_val24592900, 2044059647
store i64 %add_const_result2460, ptr %sunkaddr3638, align 8
%mul_result2466 = mul i64 %add_const_result2460, %dst_val24642902
store i64 %mul_result2466, ptr %sunkaddr3634, align 8
%xor_const_result2470 = xor i64 %add_shift_result2456, -1724190413
%add_const_result2474 = add i64 %mul_result2390.lcssa, -1956640994
%sunkaddr3639 = getelementptr i8, ptr %0, i64 24
store i64 %add_const_result2474, ptr %sunkaddr3639, align 8
%mul_result2480 = mul i64 %xor_const_result2470, %add_const_result2474
store i64 %mul_result2480, ptr %0, align 8
%562 = load <2 x i64>, ptr %sunkaddr3635, align 8
%dst_val24842878.peel = extractelement <2 x i64> %562, i64 0
%src_val24912879.peel = extractelement <2 x i64> %562, i64 1
%mul_result2486.peel = mul i64 %dst_val24842878.peel, %add_const_result2474
store i64 %mul_result2486.peel, ptr %sunkaddr3635, align 8
%shifted2492.peel = shl i64 %src_val24912879.peel, 1
%add_shift_result2493.peel = add i64 %shifted2492.peel, %mul_result2449
store i64 %add_shift_result2493.peel, ptr %sunkaddr3637, align 8
%563 = load <2 x i64>, ptr %sunkaddr3639, align 8
%dst_val25012880.peel = extractelement <2 x i64> %563, i64 0
%dst_val24962881.peel = extractelement <2 x i64> %563, i64 1
%add_const_result2497.peel = add i64 %dst_val24962881.peel, %const
%mul_result2503.peel = mul i64 %dst_val25012880.peel, %add_const_result2460
%564 = insertelement <2 x i64> poison, i64 %mul_result2503.peel, i64 0
%565 = insertelement <2 x i64> %564, i64 %add_const_result2497.peel, i64 1
store <2 x i64> %565, ptr %sunkaddr3639, align 8
%566 = load <2 x i64>, ptr %sunkaddr3634, align 8
%dst_val25102882.peel = extractelement <2 x i64> %566, i64 0
%rotated2513.peel = tail call i64 @llvm.fshl.i64(i64 %dst_val25102882.peel, i64 %dst_val25102882.peel, i64 40)
%567 = load <2 x i64>, ptr %0, align 8
%dst_val25332885.peel = extractelement <2 x i64> %567, i64 1
%568 = shufflevector <2 x i64> %567, <2 x i64> %566, <2 x i32> <i32 0, i32 3>
%569 = xor <2 x i64> %568, <i64 1382294161, i64 453411811>
%570 = insertelement <2 x i64> %569, i64 %rotated2513.peel, i64 0
store <2 x i64> %570, ptr %sunkaddr3634, align 8
%571 = load <2 x i64>, ptr %sunkaddr3638, align 8
%dst_val25272886.peel = extractelement <2 x i64> %571, i64 0
%dst_val25172887.peel = extractelement <2 x i64> %571, i64 1
%mul_result2519.peel = mul i64 %dst_val25172887.peel, %mul_result2480
%xor_result2529.peel = xor i64 %dst_val25272886.peel, %src_val24912879.peel
%572 = insertelement <2 x i64> poison, i64 %xor_result2529.peel, i64 0
%573 = insertelement <2 x i64> %572, i64 %mul_result2519.peel, i64 1
store <2 x i64> %573, ptr %sunkaddr3638, align 8
%dst_val_1282535.peel = zext i64 %dst_val25332885.peel to i128
%574 = extractelement <2 x i64> %569, i64 1
%src_val_1282536.peel = zext i64 %574 to i128
%mul_result_1282537.peel = mul nuw i128 %dst_val_1282535.peel, %src_val_1282536.peel
%umulh_result2538.peel = lshr i128 %mul_result_1282537.peel, 64
%umulh_result_642539.peel = trunc i128 %umulh_result2538.peel to i64
%add_const_result2544.peel = add i64 %xor_result2529.peel, %const3431
%mul_result2550.peel = mul i64 %add_const_result2497.peel, %mul_result2503.peel
%575 = insertelement <2 x i64> poison, i64 %mul_result2550.peel, i64 0
%576 = insertelement <2 x i64> %575, i64 %add_const_result2544.peel, i64 1
store <2 x i64> %576, ptr %sunkaddr3633, align 8
%577 = extractelement <2 x i64> %569, i64 0
%sub_result2556.peel = sub i64 %577, %574
%578 = insertelement <2 x i64> poison, i64 %sub_result2556.peel, i64 0
%579 = insertelement <2 x i64> %578, i64 %umulh_result_642539.peel, i64 1
store <2 x i64> %579, ptr %0, align 8
%add_const_result2560.peel = add i64 %574, %const3414
store i64 %add_const_result2560.peel, ptr %sunkaddr3637, align 8
%mul_result2566.peel = mul i64 %sub_result2556.peel, %add_const_result2544.peel
store i64 %mul_result2566.peel, ptr %sunkaddr3638, align 8
%580 = and i128 %mul_result_1282537.peel, 29720251238871975109557485568
%branch_condition2572.peel = icmp ne i128 %580, 0
%or.cond3351.not.peel = select i1 %branch_taken2392.lcssa, i1 true, i1 %branch_condition2572.peel
br i1 %or.cond3351.not.peel, label %continue_465, label %continue_465.loopexit
continue_465.loopexit: ; preds = %continue_433
%sunkaddr3640 = getelementptr i8, ptr %0, i64 8
%581 = load <2 x i64>, ptr %sunkaddr3640, align 8
%dst_val24842878 = extractelement <2 x i64> %581, i64 0
%src_val24912879 = extractelement <2 x i64> %581, i64 1
%mul_result2486 = mul i64 %dst_val24842878, %mul_result2503.peel
store i64 %mul_result2486, ptr %sunkaddr3640, align 8
%shifted2492 = shl i64 %src_val24912879, 1
%add_shift_result2493 = add i64 %shifted2492, %add_const_result2560.peel
%sunkaddr3641 = getelementptr i8, ptr %0, i64 56
store i64 %add_shift_result2493, ptr %sunkaddr3641, align 8
%sunkaddr3642 = getelementptr i8, ptr %0, i64 24
%582 = load <2 x i64>, ptr %sunkaddr3642, align 8
%dst_val25012880 = extractelement <2 x i64> %582, i64 0
%dst_val24962881 = extractelement <2 x i64> %582, i64 1
%add_const_result2497 = add i64 %dst_val24962881, %const
%mul_result2503 = mul i64 %dst_val25012880, %mul_result2566.peel
%583 = insertelement <2 x i64> poison, i64 %mul_result2503, i64 0
%584 = insertelement <2 x i64> %583, i64 %add_const_result2497, i64 1
store <2 x i64> %584, ptr %sunkaddr3642, align 8
%sunkaddr3643 = getelementptr i8, ptr %0, i64 48
%585 = load <2 x i64>, ptr %sunkaddr3643, align 8
%dst_val25102882 = extractelement <2 x i64> %585, i64 0
%rotated2513 = tail call i64 @llvm.fshl.i64(i64 %dst_val25102882, i64 %dst_val25102882, i64 40)
%586 = load <2 x i64>, ptr %0, align 8
%dst_val25332885 = extractelement <2 x i64> %586, i64 1
%587 = shufflevector <2 x i64> %586, <2 x i64> %585, <2 x i32> <i32 0, i32 3>
%588 = xor <2 x i64> %587, <i64 1382294161, i64 453411811>
%589 = insertelement <2 x i64> %588, i64 %rotated2513, i64 0
store <2 x i64> %589, ptr %sunkaddr3643, align 8
%sunkaddr3644 = getelementptr i8, ptr %0, i64 40
%590 = load <2 x i64>, ptr %sunkaddr3644, align 8
%dst_val25272886 = extractelement <2 x i64> %590, i64 0
%dst_val25172887 = extractelement <2 x i64> %590, i64 1
%mul_result2519 = mul i64 %dst_val25172887, %sub_result2556.peel
%xor_result2529 = xor i64 %dst_val25272886, %src_val24912879
%591 = insertelement <2 x i64> poison, i64 %xor_result2529, i64 0
%592 = insertelement <2 x i64> %591, i64 %mul_result2519, i64 1
store <2 x i64> %592, ptr %sunkaddr3644, align 8
%dst_val_1282535 = zext i64 %dst_val25332885 to i128
%593 = extractelement <2 x i64> %588, i64 1
%src_val_1282536 = zext i64 %593 to i128
%mul_result_1282537 = mul nuw i128 %dst_val_1282535, %src_val_1282536
%umulh_result2538 = lshr i128 %mul_result_1282537, 64
%umulh_result_642539 = trunc i128 %umulh_result2538 to i64
%add_const_result2544 = add i64 %xor_result2529, %const3431
%mul_result2550 = mul i64 %add_const_result2497, %mul_result2503
%594 = insertelement <2 x i64> poison, i64 %mul_result2550, i64 0
%595 = insertelement <2 x i64> %594, i64 %add_const_result2544, i64 1
%sunkaddr3645 = getelementptr i8, ptr %0, i64 32
store <2 x i64> %595, ptr %sunkaddr3645, align 8
%596 = extractelement <2 x i64> %588, i64 0
%sub_result2556 = sub i64 %596, %593
%597 = insertelement <2 x i64> poison, i64 %sub_result2556, i64 0
%598 = insertelement <2 x i64> %597, i64 %umulh_result_642539, i64 1
store <2 x i64> %598, ptr %0, align 8
%add_const_result2560 = add i64 %593, %const3414
store i64 %add_const_result2560, ptr %sunkaddr3641, align 8
%mul_result2566 = mul i64 %sub_result2556, %add_const_result2544
br label %continue_465
continue_465: ; preds = %continue_465.loopexit, %continue_433
%branch_taken2568.lcssa = phi i1 [ %branch_taken2392.lcssa, %continue_433 ], [ true, %continue_465.loopexit ]
%src_val24912879.lcssa = phi i64 [ %src_val24912879.peel, %continue_433 ], [ %src_val24912879, %continue_465.loopexit ]
%sub_result2556.lcssa = phi i64 [ %sub_result2556.peel, %continue_433 ], [ %sub_result2556, %continue_465.loopexit ]
%mul_result2566.lcssa = phi i64 [ %mul_result2566.peel, %continue_433 ], [ %mul_result2566, %continue_465.loopexit ]
%const3468 = bitcast i64 -18023591 to i64
%const3446 = bitcast i64 -1619697906 to i64
%const3428 = bitcast i64 1405900668 to i64
%sunkaddr3646 = getelementptr i8, ptr %0, i64 48
%599 = load <2 x i64>, ptr %sunkaddr3646, align 8
%dst_val25802864 = extractelement <2 x i64> %599, i64 0
%src_val25762865 = extractelement <2 x i64> %599, i64 1
%mul_result2577 = mul i64 %src_val25762865, %sub_result2556.lcssa
%xor_const_result2581 = xor i64 %dst_val25802864, 1023934078
store i64 %xor_const_result2581, ptr %sunkaddr3646, align 8
%add_shift_result2588 = add i64 %src_val25762865, %src_val24912879.lcssa
%sunkaddr3647 = getelementptr i8, ptr %0, i64 16
store i64 %add_shift_result2588, ptr %sunkaddr3647, align 8
%600 = load <2 x i64>, ptr %sunkaddr3646, align 8
%dst_val25922868 = extractelement <2 x i64> %600, i64 0
%src_val26042869 = extractelement <2 x i64> %600, i64 1
%sunkaddr3648 = getelementptr i8, ptr %0, i64 24
%601 = load <2 x i64>, ptr %sunkaddr3648, align 8
%src_val25932866 = extractelement <2 x i64> %601, i64 0
%dst_val26032867 = extractelement <2 x i64> %601, i64 1
%dst_val_1282594 = sext i64 %dst_val25922868 to i128
%src_val_1282595 = sext i64 %src_val25932866 to i128
%mul_result_1282596 = mul nsw i128 %src_val_1282595, %dst_val_1282594
%smulh_result2597 = lshr i128 %mul_result_1282596, 64
%smulh_result_642598 = trunc i128 %smulh_result2597 to i64
store i64 %smulh_result_642598, ptr %sunkaddr3646, align 8
%shifted2605 = shl i64 %src_val26042869, 2
%add_shift_result2606 = add i64 %dst_val26032867, %shifted2605
%sunkaddr3649 = getelementptr i8, ptr %0, i64 32
store i64 %add_shift_result2606, ptr %sunkaddr3649, align 8
%602 = load <2 x i64>, ptr %sunkaddr3648, align 8
%src_val26112870 = extractelement <2 x i64> %602, i64 0
%dst_val26102871 = extractelement <2 x i64> %602, i64 1
%mul_result2612 = mul i64 %dst_val26102871, %src_val26112870
%rotated2618 = tail call i64 @llvm.fshl.i64(i64 %mul_result2566.lcssa, i64 %mul_result2566.lcssa, i64 14)
%603 = insertelement <2 x i64> poison, i64 %mul_result2612, i64 0
%604 = insertelement <2 x i64> %603, i64 %rotated2618, i64 1
store <2 x i64> %604, ptr %sunkaddr3649, align 8
%xor_const_result2622 = xor i64 %src_val26042869, 795136315
%mul_result2628 = mul i64 %xor_const_result2622, %rotated2618
%sunkaddr3650 = getelementptr i8, ptr %0, i64 40
store i64 %mul_result2628, ptr %sunkaddr3650, align 8
%sunkaddr3651 = getelementptr i8, ptr %0, i64 8
%605 = load <2 x i64>, ptr %sunkaddr3651, align 8
%src_val26392872 = extractelement <2 x i64> %605, i64 0
%dst_val26312873 = extractelement <2 x i64> %605, i64 1
%rotated2634 = tail call i64 @llvm.fshl.i64(i64 %dst_val26312873, i64 %dst_val26312873, i64 62)
%shifted2640 = shl i64 %src_val26392872, 2
%add_shift_result2641 = add i64 %shifted2640, %src_val26112870
%606 = insertelement <2 x i64> poison, i64 %rotated2634, i64 0
%607 = insertelement <2 x i64> %606, i64 %add_shift_result2641, i64 1
store <2 x i64> %607, ptr %sunkaddr3647, align 8
%mul_result2647 = mul i64 %add_shift_result2641, %xor_const_result2622
store i64 %mul_result2647, ptr %sunkaddr3648, align 8
%608 = load <2 x i64>, ptr %sunkaddr3651, align 8
%dst_val26502874 = extractelement <2 x i64> %608, i64 0
%src_val26582875 = extractelement <2 x i64> %608, i64 1
%rotated2653 = tail call i64 @llvm.fshl.i64(i64 %dst_val26502874, i64 %dst_val26502874, i64 54)
store i64 %rotated2653, ptr %sunkaddr3651, align 8
%xor_result2659 = xor i64 %src_val26582875, %xor_const_result2622
%609 = load <2 x i64>, ptr %sunkaddr3651, align 8
%dst_val26632876 = extractelement <2 x i64> %609, i64 0
%src_val26642877 = extractelement <2 x i64> %609, i64 1
%mul_result2665 = mul i64 %dst_val26632876, %src_val26642877
store i64 %mul_result2665, ptr %sunkaddr3651, align 8
%610 = load <2 x i64>, ptr %sunkaddr3650, align 8
%dst_val26692857.peel = extractelement <2 x i64> %610, i64 1
%mul_result2671.peel = mul i64 %dst_val26692857.peel, %src_val26642877
%611 = load <2 x i64>, ptr %sunkaddr3649, align 8
%src_val26862855.peel = extractelement <2 x i64> %611, i64 1
%add_const_result2681.peel = add i64 %src_val26642877, %const3468
%mul_result2687.peel = mul i64 %src_val26862855.peel, %xor_result2659
%612 = insertelement <2 x i64> poison, i64 %mul_result2671.peel, i64 0
%613 = insertelement <2 x i64> %612, i64 %mul_result2687.peel, i64 1
store <2 x i64> %613, ptr %sunkaddr3646, align 8
%614 = shufflevector <2 x i64> %611, <2 x i64> %610, <2 x i32> <i32 0, i32 2>
%615 = shufflevector <2 x i64> %609, <2 x i64> <i64 poison, i64 -508479878>, <2 x i32> <i32 1, i32 3>
%616 = xor <2 x i64> %614, %615
%617 = add <2 x i64> %614, %615
%618 = shufflevector <2 x i64> %616, <2 x i64> %617, <2 x i32> <i32 0, i32 3>
store <2 x i64> %618, ptr %sunkaddr3649, align 8
%rotated2697.peel = tail call i64 @llvm.fshl.i64(i64 %mul_result2577, i64 %mul_result2577, i64 22)
store i64 %rotated2697.peel, ptr %0, align 8
%619 = load <2 x i64>, ptr %0, align 8
%dst_val27012858.peel = extractelement <2 x i64> %619, i64 0
%dst_val27072859.peel = extractelement <2 x i64> %619, i64 1
%620 = extractelement <2 x i64> %616, i64 0
%mul_result2703.peel = mul i64 %dst_val27012858.peel, %620
%621 = extractelement <2 x i64> %617, i64 1
%shifted2709.peel = shl i64 %621, 1
%add_shift_result2710.peel = add i64 %dst_val27072859.peel, %shifted2709.peel
%622 = insertelement <2 x i64> poison, i64 %mul_result2703.peel, i64 0
%623 = insertelement <2 x i64> %622, i64 %add_shift_result2710.peel, i64 1
store <2 x i64> %623, ptr %0, align 8
%xor_const_result2714.peel = xor i64 %620, %const3428
store i64 %xor_const_result2714.peel, ptr %sunkaddr3649, align 8
%624 = bitcast <2 x i64> %613 to i128
%dst_val_1282720.peel = and i128 %624, 18446744073709551615
%mul_result_1282722.peel = mul nuw i128 %dst_val_1282720.peel, %dst_val_1282720.peel
%umulh_result2723.peel = lshr i128 %mul_result_1282722.peel, 64
%umulh_result_642724.peel = trunc i128 %umulh_result2723.peel to i64
store i64 %umulh_result_642724.peel, ptr %sunkaddr3646, align 8
%625 = load <2 x i64>, ptr %sunkaddr3649, align 8
%shift3371.peel = shufflevector <2 x i64> %625, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%626 = sub <2 x i64> %625, %shift3371.peel
%sub_result2731.peel = extractelement <2 x i64> %626, i64 0
%627 = extractelement <2 x i64> %625, i64 1
%mul_result2737.peel = mul i64 %627, %mul_result2687.peel
%sub_result2743.peel = sub i64 %add_const_result2681.peel, %sub_result2731.peel
%xor_const_result2747.peel = xor i64 %sub_result2731.peel, %const3446
%628 = insertelement <2 x i64> poison, i64 %xor_const_result2747.peel, i64 0
%629 = insertelement <2 x i64> %628, i64 %mul_result2737.peel, i64 1
store <2 x i64> %629, ptr %sunkaddr3649, align 8
%mul_result2753.peel = mul i64 %xor_const_result2747.peel, %add_shift_result2710.peel
store i64 %mul_result2753.peel, ptr %sunkaddr3649, align 8
%630 = and i128 %mul_result_1282722.peel, 3094851573952976584011939840
%branch_condition2759.peel = icmp ne i128 %630, 0
%or.cond3352.peel.not = select i1 %branch_taken2568.lcssa, i1 true, i1 %branch_condition2759.peel
br i1 %or.cond3352.peel.not, label %continue_497, label %continue_497.loopexit
continue_497.loopexit: ; preds = %continue_465
%sunkaddr3652 = getelementptr i8, ptr %0, i64 40
%631 = load <2 x i64>, ptr %sunkaddr3652, align 8
%dst_val26692857 = extractelement <2 x i64> %631, i64 1
%mul_result2671 = mul i64 %dst_val26692857, %sub_result2743.peel
%sunkaddr3653 = getelementptr i8, ptr %0, i64 32
%632 = load <2 x i64>, ptr %sunkaddr3653, align 8
%src_val26862855 = extractelement <2 x i64> %632, i64 1
%mul_result2687 = mul i64 %src_val26862855, %mul_result2687.peel
%633 = insertelement <2 x i64> poison, i64 %mul_result2671, i64 0
%634 = insertelement <2 x i64> %633, i64 %mul_result2687, i64 1
%sunkaddr3654 = getelementptr i8, ptr %0, i64 48
store <2 x i64> %634, ptr %sunkaddr3654, align 8
%635 = shufflevector <2 x i64> %632, <2 x i64> %631, <2 x i32> <i32 0, i32 2>
%636 = insertelement <2 x i64> <i64 poison, i64 -508479878>, i64 %sub_result2743.peel, i64 0
%637 = xor <2 x i64> %635, %636
%638 = add <2 x i64> %635, %636
%639 = shufflevector <2 x i64> %637, <2 x i64> %638, <2 x i32> <i32 0, i32 3>
store <2 x i64> %639, ptr %sunkaddr3653, align 8
%rotated2697 = tail call i64 @llvm.fshl.i64(i64 %mul_result2703.peel, i64 %mul_result2703.peel, i64 22)
store i64 %rotated2697, ptr %0, align 8
%640 = load <2 x i64>, ptr %0, align 8
%dst_val27012858 = extractelement <2 x i64> %640, i64 0
%dst_val27072859 = extractelement <2 x i64> %640, i64 1
%641 = extractelement <2 x i64> %637, i64 0
%mul_result2703 = mul i64 %dst_val27012858, %641
%642 = extractelement <2 x i64> %638, i64 1
%shifted2709 = shl i64 %642, 1
%add_shift_result2710 = add i64 %dst_val27072859, %shifted2709
%xor_const_result2714 = xor i64 %641, %const3428
store i64 %xor_const_result2714, ptr %sunkaddr3653, align 8
%643 = bitcast <2 x i64> %634 to i128
%dst_val_1282720 = and i128 %643, 18446744073709551615
%mul_result_1282722 = mul nuw i128 %dst_val_1282720, %dst_val_1282720
%umulh_result2723 = lshr i128 %mul_result_1282722, 64
%umulh_result_642724 = trunc i128 %umulh_result2723 to i64
store i64 %umulh_result_642724, ptr %sunkaddr3654, align 8
%644 = load <2 x i64>, ptr %sunkaddr3653, align 8
%shift3371 = shufflevector <2 x i64> %644, <2 x i64> poison, <2 x i32> <i32 1, i32 poison>
%645 = sub <2 x i64> %644, %shift3371
%sub_result2731 = extractelement <2 x i64> %645, i64 0
%646 = extractelement <2 x i64> %644, i64 1
%mul_result2737 = mul i64 %646, %mul_result2687
%xor_const_result2747 = xor i64 %sub_result2731, %const3446
%mul_result2753 = mul i64 %xor_const_result2747, %add_shift_result2710
store i64 %mul_result2753, ptr %sunkaddr3653, align 8
%add_const_result2681 = add i64 %sub_result2743.peel, %const3468
%sub_result2743 = sub i64 %add_const_result2681, %sub_result2731
br label %continue_497
continue_497: ; preds = %continue_497.loopexit, %continue_465
%mul_result2687.lcssa = phi i64 [ %mul_result2687.peel, %continue_465 ], [ %mul_result2687, %continue_497.loopexit ]
%mul_result2703.lcssa = phi i64 [ %mul_result2703.peel, %continue_465 ], [ %mul_result2703, %continue_497.loopexit ]
%add_shift_result2710.lcssa = phi i64 [ %add_shift_result2710.peel, %continue_465 ], [ %add_shift_result2710, %continue_497.loopexit ]
%umulh_result_642724.lcssa = phi i64 [ %umulh_result_642724.peel, %continue_465 ], [ %umulh_result_642724, %continue_497.loopexit ]
%mul_result2737.lcssa = phi i64 [ %mul_result2737.peel, %continue_465 ], [ %mul_result2737, %continue_497.loopexit ]
%sub_result2743.lcssa = phi i64 [ %sub_result2743.peel, %continue_465 ], [ %sub_result2743, %continue_497.loopexit ]
%sunkaddr3655 = getelementptr i8, ptr %0, i64 16
store i64 %sub_result2743.lcssa, ptr %sunkaddr3655, align 8
%mul_result2764 = mul i64 %add_shift_result2710.lcssa, %mul_result2703.lcssa
%sunkaddr3656 = getelementptr i8, ptr %0, i64 8
store i64 %mul_result2764, ptr %sunkaddr3656, align 8
%647 = load <2 x i64>, ptr %sunkaddr3655, align 8
%dst_val27742846 = extractelement <2 x i64> %647, i64 0
%dst_val27682847 = extractelement <2 x i64> %647, i64 1
%xor_result2770 = xor i64 %dst_val27682847, %dst_val27742846
%shifted2776 = shl i64 %mul_result2687.lcssa, 1
%add_shift_result2777 = add i64 %dst_val27742846, %shifted2776
%dst_val_1282783 = zext i64 %xor_result2770 to i128
%src_val_1282784 = zext i64 %mul_result2737.lcssa to i128
%mul_result_1282785 = mul nuw i128 %dst_val_1282783, %src_val_1282784
%umulh_result2786 = lshr i128 %mul_result_1282785, 64
%umulh_result_642787 = trunc i128 %umulh_result2786 to i64
%648 = insertelement <2 x i64> poison, i64 %add_shift_result2777, i64 0
%649 = insertelement <2 x i64> %648, i64 %umulh_result_642787, i64 1
store <2 x i64> %649, ptr %sunkaddr3655, align 8
%rotated2794 = tail call i64 @llvm.fshl.i64(i64 %mul_result2737.lcssa, i64 %mul_result2737.lcssa, i64 61)
%sunkaddr3657 = getelementptr i8, ptr %0, i64 40
store i64 %rotated2794, ptr %sunkaddr3657, align 8
%sunkaddr3658 = getelementptr i8, ptr %0, i64 32
%650 = load <2 x i64>, ptr %sunkaddr3658, align 8
%dst_val28192848 = extractelement <2 x i64> %650, i64 0
%dst_val27982849 = extractelement <2 x i64> %650, i64 1
%mul_result2800 = mul i64 %dst_val27982849, %dst_val28192848
%xor_result2806 = xor i64 %add_shift_result2777, %mul_result2703.lcssa
store i64 %xor_result2806, ptr %0, align 8
%xor_const_result2810 = xor i64 %mul_result2687.lcssa, -943008173
%sunkaddr3659 = getelementptr i8, ptr %0, i64 56
store i64 %xor_const_result2810, ptr %sunkaddr3659, align 8
%mul_result2816 = mul i64 %dst_val28192848, %add_shift_result2777
store i64 %mul_result2816, ptr %sunkaddr3655, align 8
%rotated2822 = tail call i64 @llvm.fshl.i64(i64 %dst_val28192848, i64 %dst_val28192848, i64 24)
%651 = insertelement <2 x i64> poison, i64 %rotated2822, i64 0
%652 = insertelement <2 x i64> %651, i64 %mul_result2800, i64 1
store <2 x i64> %652, ptr %sunkaddr3658, align 8
%653 = load <2 x i64>, ptr %0, align 8
%dst_val28252850 = extractelement <2 x i64> %653, i64 0
%xor_const_result2826 = xor i64 %dst_val28252850, 416956862
%mul_result2832 = mul i64 %rotated2822, %umulh_result_642724.lcssa
store i64 %mul_result2832, ptr %sunkaddr3658, align 8
%sunkaddr3660 = getelementptr i8, ptr %0, i64 48
%654 = load <2 x i64>, ptr %sunkaddr3660, align 8
%dst_val28352852 = extractelement <2 x i64> %654, i64 0
%xor_const_result2836 = xor i64 %dst_val28352852, 883861089
store i64 %xor_const_result2836, ptr %sunkaddr3660, align 8
%655 = xor <2 x i64> %654, %653
%656 = insertelement <2 x i64> %655, i64 %xor_const_result2826, i64 0
store <2 x i64> %656, ptr %0, align 8
ret void
}
; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.fshl.i64(i64 %0, i64 %1, i64 %2) #1
attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment