#import <stdio.h>
#import <stdlib.h>
#import <string.h>
#define M 1000000007
typedef long long Int;

void init(Int *A, int L) {
    for (int i = 0; i <= 9; i++) A[i] = 1;
    for (int i = 10; i <= 12; i++) A[i] = 0;
    for (int n = 1; n <= L + 1; n++) {
        for (int i = 0; i <= 12; i++) A[13 * n + i] = 0;
        for (int i = 0; i <= 12; i++) {
            for (int j = 0; j <= 9; j++) {
                A[13 * n + ((i + j) % 13)] += A[13 * (n - 1) + i];
                A[13 * n + ((i + j) % 13)] %= M;
            }
        }
    }
}

Int f(Int *A, int n, int k) {
    return A[13 * (n - 1) + k] % M;
}

int main() {
    char S[100002];
    scanf("%s", S);
    int L = strlen(S);
    int r[6] = {1, 10, 9, 12, 3, 4};
    int var_counts[6] = {0};
    int R = 0;
    for (int i = L - 1; i >= 0; i--) {
        int j = L - 1 - i;
        char c = S[i];
        if (c == '?') {
            var_counts[j % 6]++;
        } else {
            int d = c - '0';
            R += d * r[j % 6];
        }
    }

    Int *A = (Int *)malloc(sizeof(Int) * 13 * (L + 2));
    init(A, L);

    int c = R - 5;
    Int ans = 0;
    Int x[6] = {0};
    for (x[0] = 0; x[0] < 13; x[0]++) {
        for (x[1] = 0; x[1] < 13; x[1]++) {
            for (x[2] = 0; x[2] < 13; x[2]++) {
                for (x[3] = 0; x[3] < 13; x[3]++) {
                    for (x[4] = 0; x[4] < 13; x[4]++) {
                        for (x[5] = 0; x[5] < 13; x[5]++) {
                            int d = r[0] * x[0] + r[1] * x[1] + r[2] * x[2] + r[3] * x[3] + r[4] * x[4] + r[5] * x[5] + c;
                            if (d % 13 == 0) {
                                Int result = 1;
                                for (Int k = 0; k < 6; k++) {
                                    int v = var_counts[k];
                                    if (v > 0) {
                                        result *= f(A, v, x[k]);
                                        result %= M;
                                    }
                                }
                                ans += result;
                                ans %= M;
                            }
                            if (var_counts[5] == 0) break;
                        }
                        if (var_counts[4] == 0) break;
                    }
                    if (var_counts[3] == 0) break;
                }
                if (var_counts[2] == 0) break;
            }
            if (var_counts[1] == 0) break;
        }
        if (var_counts[0] == 0) break;
    }
    printf("%lld\n", ans);
}

; ModuleID = '/data/TheStack_IR/OJ_Samples/Collated/ObjectiveC/Source_237/source.m'
source_filename = "/data/TheStack_IR/OJ_Samples/Collated/ObjectiveC/Source_237/source.m"
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"

@.str = private unnamed_addr constant [3 x i8] c"%s\00", align 1
@__const.main.r = private unnamed_addr constant [6 x i32] [i32 1, i32 10, i32 9, i32 12, i32 3, i32 4], align 16
@.str.1 = private unnamed_addr constant [6 x i8] c"%lld\0A\00", align 1

; Function Attrs: nofree nosync nounwind memory(argmem: readwrite) uwtable
define dso_local void @init(ptr nocapture noundef %A, i32 noundef %L) local_unnamed_addr #0 {
entry:
  store i64 1, ptr %A, align 8, !tbaa !5
  %arrayidx.1 = getelementptr inbounds i64, ptr %A, i64 1
  store i64 1, ptr %arrayidx.1, align 8, !tbaa !5
  %arrayidx.2 = getelementptr inbounds i64, ptr %A, i64 2
  store i64 1, ptr %arrayidx.2, align 8, !tbaa !5
  %arrayidx.3 = getelementptr inbounds i64, ptr %A, i64 3
  store i64 1, ptr %arrayidx.3, align 8, !tbaa !5
  %arrayidx.4 = getelementptr inbounds i64, ptr %A, i64 4
  store i64 1, ptr %arrayidx.4, align 8, !tbaa !5
  %arrayidx.5 = getelementptr inbounds i64, ptr %A, i64 5
  store i64 1, ptr %arrayidx.5, align 8, !tbaa !5
  %arrayidx.6 = getelementptr inbounds i64, ptr %A, i64 6
  store i64 1, ptr %arrayidx.6, align 8, !tbaa !5
  %arrayidx.7 = getelementptr inbounds i64, ptr %A, i64 7
  store i64 1, ptr %arrayidx.7, align 8, !tbaa !5
  %arrayidx.8 = getelementptr inbounds i64, ptr %A, i64 8
  store i64 1, ptr %arrayidx.8, align 8, !tbaa !5
  %arrayidx.9 = getelementptr inbounds i64, ptr %A, i64 9
  store i64 1, ptr %arrayidx.9, align 8, !tbaa !5
  %scevgep = getelementptr i8, ptr %A, i64 80
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %scevgep, i8 0, i64 24, i1 false), !tbaa !5
  %cmp12.not89 = icmp slt i32 %L, 0
  br i1 %cmp12.not89, label %for.cond.cleanup13, label %for.cond16.preheader.preheader

for.cond16.preheader.preheader:                   ; preds = %entry
  %0 = add nuw i32 %L, 1
  %wide.trip.count = zext i32 %0 to i64
  %invariant.gep = getelementptr i8, ptr %A, i64 104
  %invariant.gep113 = getelementptr i64, ptr %A, i64 -13
  br label %for.cond16.preheader

for.cond16.preheader:                             ; preds = %for.cond16.preheader.preheader, %for.cond.cleanup29
  %indvars.iv108 = phi i64 [ 1, %for.cond16.preheader.preheader ], [ %indvars.iv.next109, %for.cond.cleanup29 ]
  %indvar = phi i64 [ 0, %for.cond16.preheader.preheader ], [ %indvar.next, %for.cond.cleanup29 ]
  %1 = mul nuw nsw i64 %indvar, 104
  %gep = getelementptr i8, ptr %invariant.gep, i64 %1
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %gep, i8 0, i64 104, i1 false), !tbaa !5
  %2 = mul nuw nsw i64 %indvars.iv108, 13
  %gep114 = getelementptr i64, ptr %invariant.gep113, i64 %2
  %3 = trunc i64 %2 to i32
  br label %for.cond31.preheader

for.cond.cleanup13:                               ; preds = %for.cond.cleanup29, %entry
  ret void

for.cond31.preheader:                             ; preds = %for.cond16.preheader, %for.cond31.preheader
  %indvars.iv = phi i64 [ 0, %for.cond16.preheader ], [ %indvars.iv.next, %for.cond31.preheader ]
  %arrayidx38 = getelementptr i64, ptr %gep114, i64 %indvars.iv
  %4 = load i64, ptr %arrayidx38, align 8, !tbaa !5
  %5 = add nuw nsw i64 %indvars.iv, %2
  %idxprom42 = and i64 %5, 4294967295
  %arrayidx43 = getelementptr inbounds i64, ptr %A, i64 %idxprom42
  %6 = load i64, ptr %arrayidx43, align 8, !tbaa !5
  %add44 = add nsw i64 %6, %4
  %rem51 = srem i64 %add44, 1000000007
  store i64 %rem51, ptr %arrayidx43, align 8, !tbaa !5
  %7 = load i64, ptr %arrayidx38, align 8, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %8 = icmp eq i64 %indvars.iv.next, 13
  %iv.rem = select i1 %8, i64 0, i64 %indvars.iv.next
  %add41.1 = add nuw i64 %iv.rem, %2
  %idxprom42.1 = and i64 %add41.1, 4294967295
  %arrayidx43.1 = getelementptr inbounds i64, ptr %A, i64 %idxprom42.1
  %9 = load i64, ptr %arrayidx43.1, align 8, !tbaa !5
  %add44.1 = add nsw i64 %9, %7
  %rem51.1 = srem i64 %add44.1, 1000000007
  store i64 %rem51.1, ptr %arrayidx43.1, align 8, !tbaa !5
  %10 = load i64, ptr %arrayidx38, align 8, !tbaa !5
  %11 = trunc i64 %indvars.iv to i32
  %12 = add i32 %11, 2
  %rem.2 = urem i32 %12, 13
  %add41.2 = add nuw nsw i32 %rem.2, %3
  %idxprom42.2 = zext i32 %add41.2 to i64
  %arrayidx43.2 = getelementptr inbounds i64, ptr %A, i64 %idxprom42.2
  %13 = load i64, ptr %arrayidx43.2, align 8, !tbaa !5
  %add44.2 = add nsw i64 %13, %10
  %rem51.2 = srem i64 %add44.2, 1000000007
  store i64 %rem51.2, ptr %arrayidx43.2, align 8, !tbaa !5
  %14 = load i64, ptr %arrayidx38, align 8, !tbaa !5
  %15 = trunc i64 %indvars.iv to i32
  %16 = add i32 %15, 3
  %rem.3 = urem i32 %16, 13
  %add41.3 = add nuw nsw i32 %rem.3, %3
  %idxprom42.3 = zext i32 %add41.3 to i64
  %arrayidx43.3 = getelementptr inbounds i64, ptr %A, i64 %idxprom42.3
  %17 = load i64, ptr %arrayidx43.3, align 8, !tbaa !5
  %add44.3 = add nsw i64 %17, %14
  %rem51.3 = srem i64 %add44.3, 1000000007
  store i64 %rem51.3, ptr %arrayidx43.3, align 8, !tbaa !5
  %18 = load i64, ptr %arrayidx38, align 8, !tbaa !5
  %19 = trunc i64 %indvars.iv to i32
  %20 = add i32 %19, 4
  %rem.4 = urem i32 %20, 13
  %add41.4 = add nuw nsw i32 %rem.4, %3
  %idxprom42.4 = zext i32 %add41.4 to i64
  %arrayidx43.4 = getelementptr inbounds i64, ptr %A, i64 %idxprom42.4
  %21 = load i64, ptr %arrayidx43.4, align 8, !tbaa !5
  %add44.4 = add nsw i64 %21, %18
  %rem51.4 = srem i64 %add44.4, 1000000007
  store i64 %rem51.4, ptr %arrayidx43.4, align 8, !tbaa !5
  %22 = load i64, ptr %arrayidx38, align 8, !tbaa !5
  %23 = trunc i64 %indvars.iv to i32
  %24 = add i32 %23, 5
  %rem.5 = urem i32 %24, 13
  %add41.5 = add nuw nsw i32 %rem.5, %3
  %idxprom42.5 = zext i32 %add41.5 to i64
  %arrayidx43.5 = getelementptr inbounds i64, ptr %A, i64 %idxprom42.5
  %25 = load i64, ptr %arrayidx43.5, align 8, !tbaa !5
  %add44.5 = add nsw i64 %25, %22
  %rem51.5 = srem i64 %add44.5, 1000000007
  store i64 %rem51.5, ptr %arrayidx43.5, align 8, !tbaa !5
  %26 = load i64, ptr %arrayidx38, align 8, !tbaa !5
  %27 = trunc i64 %indvars.iv to i32
  %28 = add i32 %27, 6
  %rem.6 = urem i32 %28, 13
  %add41.6 = add nuw nsw i32 %rem.6, %3
  %idxprom42.6 = zext i32 %add41.6 to i64
  %arrayidx43.6 = getelementptr inbounds i64, ptr %A, i64 %idxprom42.6
  %29 = load i64, ptr %arrayidx43.6, align 8, !tbaa !5
  %add44.6 = add nsw i64 %29, %26
  %rem51.6 = srem i64 %add44.6, 1000000007
  store i64 %rem51.6, ptr %arrayidx43.6, align 8, !tbaa !5
  %30 = load i64, ptr %arrayidx38, align 8, !tbaa !5
  %31 = trunc i64 %indvars.iv to i32
  %32 = add i32 %31, 7
  %rem.7 = urem i32 %32, 13
  %add41.7 = add nuw nsw i32 %rem.7, %3
  %idxprom42.7 = zext i32 %add41.7 to i64
  %arrayidx43.7 = getelementptr inbounds i64, ptr %A, i64 %idxprom42.7
  %33 = load i64, ptr %arrayidx43.7, align 8, !tbaa !5
  %add44.7 = add nsw i64 %33, %30
  %rem51.7 = srem i64 %add44.7, 1000000007
  store i64 %rem51.7, ptr %arrayidx43.7, align 8, !tbaa !5
  %34 = load i64, ptr %arrayidx38, align 8, !tbaa !5
  %35 = trunc i64 %indvars.iv to i32
  %36 = add i32 %35, 8
  %rem.8 = urem i32 %36, 13
  %add41.8 = add nuw nsw i32 %rem.8, %3
  %idxprom42.8 = zext i32 %add41.8 to i64
  %arrayidx43.8 = getelementptr inbounds i64, ptr %A, i64 %idxprom42.8
  %37 = load i64, ptr %arrayidx43.8, align 8, !tbaa !5
  %add44.8 = add nsw i64 %37, %34
  %rem51.8 = srem i64 %add44.8, 1000000007
  store i64 %rem51.8, ptr %arrayidx43.8, align 8, !tbaa !5
  %38 = load i64, ptr %arrayidx38, align 8, !tbaa !5
  %39 = trunc i64 %indvars.iv to i32
  %40 = add i32 %39, 9
  %rem.9 = urem i32 %40, 13
  %add41.9 = add nuw nsw i32 %rem.9, %3
  %idxprom42.9 = zext i32 %add41.9 to i64
  %arrayidx43.9 = getelementptr inbounds i64, ptr %A, i64 %idxprom42.9
  %41 = load i64, ptr %arrayidx43.9, align 8, !tbaa !5
  %add44.9 = add nsw i64 %41, %38
  %rem51.9 = srem i64 %add44.9, 1000000007
  store i64 %rem51.9, ptr %arrayidx43.9, align 8, !tbaa !5
  %exitcond.not = icmp eq i64 %indvars.iv.next, 13
  br i1 %exitcond.not, label %for.cond.cleanup29, label %for.cond31.preheader

for.cond.cleanup29:                               ; preds = %for.cond31.preheader
  %indvars.iv.next109 = add nuw nsw i64 %indvars.iv108, 1
  %indvar.next = add nuw nsw i64 %indvar, 1
  %exitcond112 = icmp eq i64 %indvar.next, %wide.trip.count
  br i1 %exitcond112, label %for.cond.cleanup13, label %for.cond16.preheader
}

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

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

; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable
define dso_local i64 @f(ptr nocapture noundef readonly %A, i32 noundef %n, i32 noundef %k) local_unnamed_addr #2 {
entry:
  %0 = mul i32 %n, 13
  %mul = add i32 %0, -13
  %add = add nsw i32 %mul, %k
  %idxprom = sext i32 %add to i64
  %arrayidx = getelementptr inbounds i64, ptr %A, i64 %idxprom
  %1 = load i64, ptr %arrayidx, align 8, !tbaa !5
  %rem = srem i64 %1, 1000000007
  ret i64 %rem
}

; Function Attrs: nofree nounwind uwtable
define dso_local i32 @main() local_unnamed_addr #3 {
entry:
  %S = alloca [100002 x i8], align 16
  %var_counts = alloca [6 x i32], align 16
  call void @llvm.lifetime.start.p0(i64 100002, ptr nonnull %S) #8
  %call = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str, ptr noundef nonnull %S)
  %call2 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %S) #9
  %conv = trunc i64 %call2 to i32
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %var_counts) #8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %var_counts, i8 0, i64 24, i1 false)
  %cmp195 = icmp sgt i32 %conv, 0
  br i1 %cmp195, label %for.body.preheader, label %for.cond.cleanup

for.body.preheader:                               ; preds = %entry
  %sub = add i64 %call2, 4294967295
  %0 = and i64 %sub, 4294967295
  br label %for.body

for.cond.cleanup.loopexit:                        ; preds = %if.end
  %arrayidx116.phi.trans.insert = getelementptr inbounds [6 x i32], ptr %var_counts, i64 0, i64 5
  %.pre = load i32, ptr %arrayidx116.phi.trans.insert, align 4, !tbaa !9
  %arrayidx125.phi.trans.insert = getelementptr inbounds [6 x i32], ptr %var_counts, i64 0, i64 4
  %.pre513 = load i32, ptr %arrayidx125.phi.trans.insert, align 16, !tbaa !9
  %arrayidx134.phi.trans.insert = getelementptr inbounds [6 x i32], ptr %var_counts, i64 0, i64 3
  %.pre514 = load i32, ptr %arrayidx134.phi.trans.insert, align 4, !tbaa !9
  %arrayidx143.phi.trans.insert = getelementptr inbounds [6 x i32], ptr %var_counts, i64 0, i64 2
  %.pre515 = load i32, ptr %arrayidx143.phi.trans.insert, align 8, !tbaa !9
  %arrayidx152.phi.trans.insert = getelementptr inbounds [6 x i32], ptr %var_counts, i64 0, i64 1
  %.pre516 = load i32, ptr %arrayidx152.phi.trans.insert, align 4, !tbaa !9
  %.pre517 = load i32, ptr %var_counts, align 16, !tbaa !9
  %1 = add nsw i32 %R.1, -5
  br label %for.cond.cleanup

for.cond.cleanup:                                 ; preds = %for.cond.cleanup.loopexit, %entry
  %2 = phi i32 [ 0, %entry ], [ %.pre517, %for.cond.cleanup.loopexit ]
  %3 = phi i32 [ 0, %entry ], [ %.pre516, %for.cond.cleanup.loopexit ]
  %4 = phi i32 [ 0, %entry ], [ %.pre515, %for.cond.cleanup.loopexit ]
  %5 = phi i32 [ 0, %entry ], [ %.pre514, %for.cond.cleanup.loopexit ]
  %6 = phi i32 [ 0, %entry ], [ %.pre513, %for.cond.cleanup.loopexit ]
  %7 = phi i32 [ 0, %entry ], [ %.pre, %for.cond.cleanup.loopexit ]
  %R.0.lcssa = phi i32 [ -5, %entry ], [ %1, %for.cond.cleanup.loopexit ]
  %add16 = shl i64 %call2, 32
  %sext = add i64 %add16, 8589934592
  %conv17 = ashr exact i64 %sext, 32
  %mul18 = mul nsw i64 %conv17, 104
  %call19 = call noalias ptr @malloc(i64 noundef %mul18) #10
  call void @init(ptr noundef %call19, i32 noundef %conv)
  %cmp117 = icmp eq i32 %7, 0
  %cmp126 = icmp eq i32 %6, 0
  %cmp135 = icmp eq i32 %5, 0
  %cmp144 = icmp eq i32 %4, 0
  %cmp153 = icmp eq i32 %3, 0
  %cmp162 = icmp eq i32 %2, 0
  br i1 %cmp117, label %for.cond.cleanup.split.us, label %for.body27.preheader

for.body27.preheader:                             ; preds = %for.cond.cleanup
  %cmp101 = icmp sgt i32 %2, 0
  %8 = mul i32 %2, 13
  %mul.i = add i32 %8, -13
  %cmp101.1 = icmp sgt i32 %3, 0
  %9 = mul i32 %3, 13
  %mul.i.1 = add i32 %9, -13
  %cmp101.2 = icmp sgt i32 %4, 0
  %10 = mul i32 %4, 13
  %mul.i.2 = add i32 %10, -13
  %cmp101.3 = icmp sgt i32 %5, 0
  %11 = mul i32 %5, 13
  %mul.i.3 = add i32 %11, -13
  %cmp101.4 = icmp sgt i32 %6, 0
  %12 = mul i32 %6, 13
  %mul.i.4 = add i32 %12, -13
  %cmp101.5 = icmp sgt i32 %7, 0
  %13 = mul i32 %7, 13
  %mul.i.5 = add i32 %13, -13
  br label %for.body27

for.cond.cleanup.split.us:                        ; preds = %for.cond.cleanup
  br i1 %cmp126, label %for.cond.cleanup.split.us.split.us, label %for.body27.us.preheader

for.body27.us.preheader:                          ; preds = %for.cond.cleanup.split.us
  %cmp101.us.us.us220.us.us.us = icmp sgt i32 %2, 0
  %14 = mul i32 %2, 13
  %mul.i.us.us.us224.us.us.us = add i32 %14, -13
  %cmp101.us.us.us220.us.us.us.1 = icmp sgt i32 %3, 0
  %15 = mul i32 %3, 13
  %mul.i.us.us.us224.us.us.us.1 = add i32 %15, -13
  %cmp101.us.us.us220.us.us.us.2 = icmp sgt i32 %4, 0
  %16 = mul i32 %4, 13
  %mul.i.us.us.us224.us.us.us.2 = add i32 %16, -13
  %cmp101.us.us.us220.us.us.us.3 = icmp sgt i32 %5, 0
  %17 = mul i32 %5, 13
  %mul.i.us.us.us224.us.us.us.3 = add i32 %17, -13
  %cmp101.us.us.us220.us.us.us.4 = icmp sgt i32 %6, 0
  %18 = mul i32 %6, 13
  %mul.i.us.us.us224.us.us.us.4 = add i32 %18, -13
  br label %for.body27.us

for.cond.cleanup.split.us.split.us:               ; preds = %for.cond.cleanup.split.us
  br i1 %cmp135, label %for.cond.cleanup.split.us.split.us.split.us, label %for.body27.us.us.preheader

for.body27.us.us.preheader:                       ; preds = %for.cond.cleanup.split.us.split.us
  %cmp101.us.us.us.us.us.us264.us.us.us.us.us = icmp sgt i32 %2, 0
  %19 = mul i32 %2, 13
  %mul.i.us.us.us.us.us.us268.us.us.us.us.us = add i32 %19, -13
  %cmp101.us.us.us.us.us.us264.us.us.us.us.us.1 = icmp sgt i32 %3, 0
  %20 = mul i32 %3, 13
  %mul.i.us.us.us.us.us.us268.us.us.us.us.us.1 = add i32 %20, -13
  %cmp101.us.us.us.us.us.us264.us.us.us.us.us.2 = icmp sgt i32 %4, 0
  %21 = mul i32 %4, 13
  %mul.i.us.us.us.us.us.us268.us.us.us.us.us.2 = add i32 %21, -13
  %cmp101.us.us.us.us.us.us264.us.us.us.us.us.3 = icmp sgt i32 %5, 0
  %22 = mul i32 %5, 13
  %mul.i.us.us.us.us.us.us268.us.us.us.us.us.3 = add i32 %22, -13
  br label %for.body27.us.us

for.cond.cleanup.split.us.split.us.split.us:      ; preds = %for.cond.cleanup.split.us.split.us
  br i1 %cmp144, label %for.cond.cleanup.split.us.split.us.split.us.split.us, label %for.body27.us.us.us.preheader

for.body27.us.us.us.preheader:                    ; preds = %for.cond.cleanup.split.us.split.us.split.us
  %cmp101.us.us.us.us.us.us.us.us.us.us320.us.us.us.us.us = icmp sgt i32 %2, 0
  %23 = mul i32 %2, 13
  %mul.i.us.us.us.us.us.us.us.us.us.us324.us.us.us.us.us = add i32 %23, -13
  %cmp101.us.us.us.us.us.us.us.us.us.us320.us.us.us.us.us.1 = icmp sgt i32 %3, 0
  %24 = mul i32 %3, 13
  %mul.i.us.us.us.us.us.us.us.us.us.us324.us.us.us.us.us.1 = add i32 %24, -13
  %cmp101.us.us.us.us.us.us.us.us.us.us320.us.us.us.us.us.2 = icmp sgt i32 %4, 0
  %25 = mul i32 %4, 13
  %mul.i.us.us.us.us.us.us.us.us.us.us324.us.us.us.us.us.2 = add i32 %25, -13
  br label %for.body27.us.us.us

for.cond.cleanup.split.us.split.us.split.us.split.us: ; preds = %for.cond.cleanup.split.us.split.us.split.us
  br i1 %cmp153, label %for.cond.cleanup.split.us.split.us.split.us.split.us.split.us, label %for.body27.us.us.us.us.preheader

for.body27.us.us.us.us.preheader:                 ; preds = %for.cond.cleanup.split.us.split.us.split.us.split.us
  %cmp101.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us392.us.us.us = icmp sgt i32 %2, 0
  %26 = mul i32 %2, 13
  %mul.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us396.us.us.us = add i32 %26, -13
  %cmp101.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us392.us.us.us.1 = icmp sgt i32 %3, 0
  %27 = mul i32 %3, 13
  %mul.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us396.us.us.us.1 = add i32 %27, -13
  br label %for.body27.us.us.us.us

for.cond.cleanup.split.us.split.us.split.us.split.us.split.us: ; preds = %for.cond.cleanup.split.us.split.us.split.us.split.us
  br i1 %cmp162, label %for.body27.us.us.us.us.us.us, label %for.body27.us.us.us.us.us.preheader

for.body27.us.us.us.us.us.preheader:              ; preds = %for.cond.cleanup.split.us.split.us.split.us.split.us.split.us
  %cmp101.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = icmp sgt i32 %2, 0
  %28 = mul i32 %2, 13
  %mul.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = add i32 %28, -13
  br label %for.body27.us.us.us.us.us

for.body27.us.us.us.us.us.us:                     ; preds = %for.cond.cleanup.split.us.split.us.split.us.split.us.split.us
  %rem91.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = srem i32 %R.0.lcssa, 13
  %cmp92.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = icmp eq i32 %rem91.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, 0
  %spec.select = zext i1 %cmp92.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us to i64
  br label %for.end169

for.body27.us.us.us.us.us:                        ; preds = %for.body27.us.us.us.us.us.preheader, %if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us
  %x.sroa.0.0 = phi i64 [ 0, %for.body27.us.us.us.us.us.preheader ], [ %inc168.us.us.us.us.us, %if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us ]
  %ans.0346.us.us.us.us.us = phi i64 [ 0, %for.body27.us.us.us.us.us.preheader ], [ %ans.6.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, %if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us ]
  %29 = trunc i64 %x.sroa.0.0 to i32
  %conv90.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = add i32 %R.0.lcssa, %29
  %rem91.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = srem i32 %conv90.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, 13
  %cmp92.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = icmp eq i32 %rem91.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, 0
  br i1 %cmp92.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, label %for.body99.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.preheader, label %if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us

for.body99.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.preheader: ; preds = %for.body27.us.us.us.us.us
  br i1 %cmp101.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, label %if.then103.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, label %if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.5

if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us: ; preds = %if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.5, %for.body27.us.us.us.us.us
  %ans.6.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = phi i64 [ %rem114.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, %if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.5 ], [ %ans.0346.us.us.us.us.us, %for.body27.us.us.us.us.us ]
  %inc168.us.us.us.us.us = add nuw nsw i64 %x.sroa.0.0, 1
  %exitcond445.not = icmp eq i64 %inc168.us.us.us.us.us, 13
  br i1 %exitcond445.not, label %for.end169, label %for.body27.us.us.us.us.us

if.then103.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us: ; preds = %for.body99.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.preheader
  %conv105.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = trunc i64 %x.sroa.0.0 to i32
  %add.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = add nsw i32 %mul.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, %conv105.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us
  %idxprom.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = sext i32 %add.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us to i64
  %arrayidx.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us
  %30 = load i64, ptr %arrayidx.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, align 8, !tbaa !5
  %rem.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = srem i64 %30, 1000000007
  br label %if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.5

if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.5: ; preds = %for.body99.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.preheader, %if.then103.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us
  %result.1.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = phi i64 [ %rem.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, %if.then103.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us ], [ 1, %for.body99.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.preheader ]
  %add113.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = add nsw i64 %result.1.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, %ans.0346.us.us.us.us.us
  %rem114.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us = srem i64 %add113.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, 1000000007
  br label %if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us

for.body27.us.us.us.us:                           ; preds = %for.end160.split.us.split.us.split.us.split.us.split.us.us.us.us, %for.body27.us.us.us.us.preheader
  %x.sroa.0.1 = phi i64 [ 0, %for.body27.us.us.us.us.preheader ], [ %inc168.us.us.us.us, %for.end160.split.us.split.us.split.us.split.us.split.us.us.us.us ]
  %ans.0346.us.us.us.us = phi i64 [ 0, %for.body27.us.us.us.us.preheader ], [ %ans.6.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us387.us.us.us, %for.end160.split.us.split.us.split.us.split.us.split.us.us.us.us ]
  %conv105.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us395.us.us.us = trunc i64 %x.sroa.0.1 to i32
  %add.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us397.us.us.us = add nsw i32 %mul.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us396.us.us.us, %conv105.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us395.us.us.us
  %idxprom.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us398.us.us.us = sext i32 %add.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us397.us.us.us to i64
  %arrayidx.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us399.us.us.us = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us398.us.us.us
  br label %for.body33.us.us.us.us.us.us.us.us

for.body33.us.us.us.us.us.us.us.us:               ; preds = %for.body27.us.us.us.us, %if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us386.us.us.us
  %x.sroa.17.0 = phi i64 [ 0, %for.body27.us.us.us.us ], [ %inc159.us.us.us.us.us.us.us.us, %if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us386.us.us.us ]
  %ans.1285.us.us.us.us.us.us.us.us = phi i64 [ %ans.0346.us.us.us.us, %for.body27.us.us.us.us ], [ %ans.6.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us387.us.us.us, %if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us386.us.us.us ]
  %mul66.us.us.us.us.us.us.us.us = mul nuw nsw i64 %x.sroa.17.0, 10
  %add67.us.us.us.us.us.us.us.us = add nuw nsw i64 %mul66.us.us.us.us.us.us.us.us, %x.sroa.0.1
  %31 = trunc i64 %add67.us.us.us.us.us.us.us.us to i32
  %conv90.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us379.us.us.us = add i32 %R.0.lcssa, %31
  %rem91.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us380.us.us.us = srem i32 %conv90.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us379.us.us.us, 13
  %cmp92.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us381.us.us.us = icmp eq i32 %rem91.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us380.us.us.us, 0
  br i1 %cmp92.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us381.us.us.us, label %for.body99.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us388.us.us.us.preheader, label %if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us386.us.us.us

for.body99.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us388.us.us.us.preheader: ; preds = %for.body33.us.us.us.us.us.us.us.us
  br i1 %cmp101.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us392.us.us.us, label %if.then103.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us393.us.us.us, label %if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us403.us.us.us

if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us386.us.us.us: ; preds = %if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us403.us.us.us.5, %for.body33.us.us.us.us.us.us.us.us
  %ans.6.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us387.us.us.us = phi i64 [ %rem114.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us385.us.us.us, %if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us403.us.us.us.5 ], [ %ans.1285.us.us.us.us.us.us.us.us, %for.body33.us.us.us.us.us.us.us.us ]
  %inc159.us.us.us.us.us.us.us.us = add nuw nsw i64 %x.sroa.17.0, 1
  %exitcond442.not = icmp eq i64 %inc159.us.us.us.us.us.us.us.us, 13
  br i1 %exitcond442.not, label %for.end160.split.us.split.us.split.us.split.us.split.us.us.us.us, label %for.body33.us.us.us.us.us.us.us.us

if.then103.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us393.us.us.us: ; preds = %for.body99.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us388.us.us.us.preheader
  %32 = load i64, ptr %arrayidx.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us399.us.us.us, align 8, !tbaa !5
  %rem.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us400.us.us.us = srem i64 %32, 1000000007
  br label %if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us403.us.us.us

if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us403.us.us.us: ; preds = %if.then103.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us393.us.us.us, %for.body99.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us388.us.us.us.preheader
  %result.1.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us404.us.us.us = phi i64 [ %rem.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us400.us.us.us, %if.then103.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us393.us.us.us ], [ 1, %for.body99.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us388.us.us.us.preheader ]
  br i1 %cmp101.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us392.us.us.us.1, label %if.then103.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us393.us.us.us.1, label %if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us403.us.us.us.5

if.then103.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us393.us.us.us.1: ; preds = %if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us403.us.us.us
  %conv105.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us395.us.us.us.1 = trunc i64 %x.sroa.17.0 to i32
  %add.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us397.us.us.us.1 = add nsw i32 %mul.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us396.us.us.us.1, %conv105.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us395.us.us.us.1
  %idxprom.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us398.us.us.us.1 = sext i32 %add.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us397.us.us.us.1 to i64
  %arrayidx.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us399.us.us.us.1 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us398.us.us.us.1
  %33 = load i64, ptr %arrayidx.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us399.us.us.us.1, align 8, !tbaa !5
  %rem.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us400.us.us.us.1 = srem i64 %33, 1000000007
  %mul107.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us401.us.us.us.1 = mul nsw i64 %rem.i.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us400.us.us.us.1, %result.1.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us404.us.us.us
  %rem108.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us402.us.us.us.1 = srem i64 %mul107.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us401.us.us.us.1, 1000000007
  br label %if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us403.us.us.us.5

if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us403.us.us.us.5: ; preds = %if.then103.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us393.us.us.us.1, %if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us403.us.us.us
  %result.1.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us404.us.us.us.1 = phi i64 [ %rem108.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us402.us.us.us.1, %if.then103.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us393.us.us.us.1 ], [ %result.1.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us404.us.us.us, %if.end109.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us403.us.us.us ]
  %add113.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us384.us.us.us = add nsw i64 %result.1.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us404.us.us.us.1, %ans.1285.us.us.us.us.us.us.us.us
  %rem114.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us385.us.us.us = srem i64 %add113.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us384.us.us.us, 1000000007
  br label %if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us386.us.us.us

for.end160.split.us.split.us.split.us.split.us.split.us.us.us.us: ; preds = %if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us386.us.us.us
  %inc168.us.us.us.us = add nuw nsw i64 %x.sroa.0.1, 1
  %exitcond443.not = icmp eq i64 %inc168.us.us.us.us, 13
  %or.cond = select i1 %cmp162, i1 true, i1 %exitcond443.not
  br i1 %or.cond, label %for.end169, label %for.body27.us.us.us.us

for.body27.us.us.us:                              ; preds = %for.end160.split.us.split.us.split.us.split.us376.us.us, %for.body27.us.us.us.preheader
  %x.sroa.0.2 = phi i64 [ 0, %for.body27.us.us.us.preheader ], [ %inc168.us.us.us, %for.end160.split.us.split.us.split.us.split.us376.us.us ]
  %ans.0346.us.us.us = phi i64 [ 0, %for.body27.us.us.us.preheader ], [ %ans.6.us.us.us.us.us.us.us.us.us.us315.us.us.us.us.us, %for.end160.split.us.split.us.split.us.split.us376.us.us ]
  %conv105.us.us.us.us.us.us.us.us.us.us323.us.us.us.us.us = trunc i64 %x.sroa.0.2 to i32
  %add.i.us.us.us.us.us.us.us.us.us.us325.us.us.us.us.us = add nsw i32 %mul.i.us.us.us.us.us.us.us.us.us.us324.us.us.us.us.us, %conv105.us.us.us.us.us.us.us.us.us.us323.us.us.us.us.us
  %idxprom.i.us.us.us.us.us.us.us.us.us.us326.us.us.us.us.us = sext i32 %add.i.us.us.us.us.us.us.us.us.us.us325.us.us.us.us.us to i64
  %arrayidx.i.us.us.us.us.us.us.us.us.us.us327.us.us.us.us.us = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us.us.us.us.us.us.us.us326.us.us.us.us.us
  br label %for.body33.us.us.us.us369.us.us

for.body33.us.us.us.us369.us.us:                  ; preds = %for.end151.split.us.split.us.split.us.split.us.us.us.us.us.us, %for.body27.us.us.us
  %x.sroa.17.1 = phi i64 [ 0, %for.body27.us.us.us ], [ %inc159.us.us.us.us375.us.us, %for.end151.split.us.split.us.split.us.split.us.us.us.us.us.us ]
  %ans.1285.us.us.us.us370.us.us = phi i64 [ %ans.0346.us.us.us, %for.body27.us.us.us ], [ %ans.6.us.us.us.us.us.us.us.us.us.us315.us.us.us.us.us, %for.end151.split.us.split.us.split.us.split.us.us.us.us.us.us ]
  %mul66.us.us.us.us372.us.us = mul nuw nsw i64 %x.sroa.17.1, 10
  %add67.us.us.us.us373.us.us = add nuw nsw i64 %mul66.us.us.us.us372.us.us, %x.sroa.0.2
  %conv105.us.us.us.us.us.us.us.us.us.us323.us.us.us.us.us.1 = trunc i64 %x.sroa.17.1 to i32
  %add.i.us.us.us.us.us.us.us.us.us.us325.us.us.us.us.us.1 = add nsw i32 %mul.i.us.us.us.us.us.us.us.us.us.us324.us.us.us.us.us.1, %conv105.us.us.us.us.us.us.us.us.us.us323.us.us.us.us.us.1
  %idxprom.i.us.us.us.us.us.us.us.us.us.us326.us.us.us.us.us.1 = sext i32 %add.i.us.us.us.us.us.us.us.us.us.us325.us.us.us.us.us.1 to i64
  %arrayidx.i.us.us.us.us.us.us.us.us.us.us327.us.us.us.us.us.1 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us.us.us.us.us.us.us.us326.us.us.us.us.us.1
  br label %for.body39.us.us.us.us.us.us.us.us.us

for.body39.us.us.us.us.us.us.us.us.us:            ; preds = %if.end115.us.us.us.us.us.us.us.us.us.us314.us.us.us.us.us, %for.body33.us.us.us.us369.us.us
  %x.sroa.36.0 = phi i64 [ 0, %for.body33.us.us.us.us369.us.us ], [ %inc150.us.us.us.us.us.us.us.us.us, %if.end115.us.us.us.us.us.us.us.us.us.us314.us.us.us.us.us ]
  %ans.2240.us.us.us.us.us.us.us.us.us = phi i64 [ %ans.1285.us.us.us.us370.us.us, %for.body33.us.us.us.us369.us.us ], [ %ans.6.us.us.us.us.us.us.us.us.us.us315.us.us.us.us.us, %if.end115.us.us.us.us.us.us.us.us.us.us314.us.us.us.us.us ]
  %mul71.us.us.us.us.us.us.us.us.us = mul nuw nsw i64 %x.sroa.36.0, 9
  %add72.us.us.us.us.us.us.us.us.us = add nuw nsw i64 %add67.us.us.us.us373.us.us, %mul71.us.us.us.us.us.us.us.us.us
  %34 = trunc i64 %add72.us.us.us.us.us.us.us.us.us to i32
  %conv90.us.us.us.us.us.us.us.us.us.us307.us.us.us.us.us = add i32 %R.0.lcssa, %34
  %rem91.us.us.us.us.us.us.us.us.us.us308.us.us.us.us.us = srem i32 %conv90.us.us.us.us.us.us.us.us.us.us307.us.us.us.us.us, 13
  %cmp92.us.us.us.us.us.us.us.us.us.us309.us.us.us.us.us = icmp eq i32 %rem91.us.us.us.us.us.us.us.us.us.us308.us.us.us.us.us, 0
  br i1 %cmp92.us.us.us.us.us.us.us.us.us.us309.us.us.us.us.us, label %for.body99.us.us.us.us.us.us.us.us.us.us316.us.us.us.us.us.preheader, label %if.end115.us.us.us.us.us.us.us.us.us.us314.us.us.us.us.us

for.body99.us.us.us.us.us.us.us.us.us.us316.us.us.us.us.us.preheader: ; preds = %for.body39.us.us.us.us.us.us.us.us.us
  br i1 %cmp101.us.us.us.us.us.us.us.us.us.us320.us.us.us.us.us, label %if.then103.us.us.us.us.us.us.us.us.us.us321.us.us.us.us.us, label %if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us

if.end115.us.us.us.us.us.us.us.us.us.us314.us.us.us.us.us: ; preds = %if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us.5, %for.body39.us.us.us.us.us.us.us.us.us
  %ans.6.us.us.us.us.us.us.us.us.us.us315.us.us.us.us.us = phi i64 [ %rem114.us.us.us.us.us.us.us.us.us.us313.us.us.us.us.us, %if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us.5 ], [ %ans.2240.us.us.us.us.us.us.us.us.us, %for.body39.us.us.us.us.us.us.us.us.us ]
  %inc150.us.us.us.us.us.us.us.us.us = add nuw nsw i64 %x.sroa.36.0, 1
  %exitcond438.not = icmp eq i64 %inc150.us.us.us.us.us.us.us.us.us, 13
  br i1 %exitcond438.not, label %for.end151.split.us.split.us.split.us.split.us.us.us.us.us.us, label %for.body39.us.us.us.us.us.us.us.us.us

if.then103.us.us.us.us.us.us.us.us.us.us321.us.us.us.us.us: ; preds = %for.body99.us.us.us.us.us.us.us.us.us.us316.us.us.us.us.us.preheader
  %35 = load i64, ptr %arrayidx.i.us.us.us.us.us.us.us.us.us.us327.us.us.us.us.us, align 8, !tbaa !5
  %rem.i.us.us.us.us.us.us.us.us.us.us328.us.us.us.us.us = srem i64 %35, 1000000007
  br label %if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us

if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us: ; preds = %if.then103.us.us.us.us.us.us.us.us.us.us321.us.us.us.us.us, %for.body99.us.us.us.us.us.us.us.us.us.us316.us.us.us.us.us.preheader
  %result.1.us.us.us.us.us.us.us.us.us.us332.us.us.us.us.us = phi i64 [ %rem.i.us.us.us.us.us.us.us.us.us.us328.us.us.us.us.us, %if.then103.us.us.us.us.us.us.us.us.us.us321.us.us.us.us.us ], [ 1, %for.body99.us.us.us.us.us.us.us.us.us.us316.us.us.us.us.us.preheader ]
  br i1 %cmp101.us.us.us.us.us.us.us.us.us.us320.us.us.us.us.us.1, label %if.then103.us.us.us.us.us.us.us.us.us.us321.us.us.us.us.us.1, label %if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us.1

if.then103.us.us.us.us.us.us.us.us.us.us321.us.us.us.us.us.1: ; preds = %if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us
  %36 = load i64, ptr %arrayidx.i.us.us.us.us.us.us.us.us.us.us327.us.us.us.us.us.1, align 8, !tbaa !5
  %rem.i.us.us.us.us.us.us.us.us.us.us328.us.us.us.us.us.1 = srem i64 %36, 1000000007
  %mul107.us.us.us.us.us.us.us.us.us.us329.us.us.us.us.us.1 = mul nsw i64 %rem.i.us.us.us.us.us.us.us.us.us.us328.us.us.us.us.us.1, %result.1.us.us.us.us.us.us.us.us.us.us332.us.us.us.us.us
  %rem108.us.us.us.us.us.us.us.us.us.us330.us.us.us.us.us.1 = srem i64 %mul107.us.us.us.us.us.us.us.us.us.us329.us.us.us.us.us.1, 1000000007
  br label %if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us.1

if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us.1: ; preds = %if.then103.us.us.us.us.us.us.us.us.us.us321.us.us.us.us.us.1, %if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us
  %result.1.us.us.us.us.us.us.us.us.us.us332.us.us.us.us.us.1 = phi i64 [ %rem108.us.us.us.us.us.us.us.us.us.us330.us.us.us.us.us.1, %if.then103.us.us.us.us.us.us.us.us.us.us321.us.us.us.us.us.1 ], [ %result.1.us.us.us.us.us.us.us.us.us.us332.us.us.us.us.us, %if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us ]
  br i1 %cmp101.us.us.us.us.us.us.us.us.us.us320.us.us.us.us.us.2, label %if.then103.us.us.us.us.us.us.us.us.us.us321.us.us.us.us.us.2, label %if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us.5

if.then103.us.us.us.us.us.us.us.us.us.us321.us.us.us.us.us.2: ; preds = %if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us.1
  %conv105.us.us.us.us.us.us.us.us.us.us323.us.us.us.us.us.2 = trunc i64 %x.sroa.36.0 to i32
  %add.i.us.us.us.us.us.us.us.us.us.us325.us.us.us.us.us.2 = add nsw i32 %mul.i.us.us.us.us.us.us.us.us.us.us324.us.us.us.us.us.2, %conv105.us.us.us.us.us.us.us.us.us.us323.us.us.us.us.us.2
  %idxprom.i.us.us.us.us.us.us.us.us.us.us326.us.us.us.us.us.2 = sext i32 %add.i.us.us.us.us.us.us.us.us.us.us325.us.us.us.us.us.2 to i64
  %arrayidx.i.us.us.us.us.us.us.us.us.us.us327.us.us.us.us.us.2 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us.us.us.us.us.us.us.us326.us.us.us.us.us.2
  %37 = load i64, ptr %arrayidx.i.us.us.us.us.us.us.us.us.us.us327.us.us.us.us.us.2, align 8, !tbaa !5
  %rem.i.us.us.us.us.us.us.us.us.us.us328.us.us.us.us.us.2 = srem i64 %37, 1000000007
  %mul107.us.us.us.us.us.us.us.us.us.us329.us.us.us.us.us.2 = mul nsw i64 %rem.i.us.us.us.us.us.us.us.us.us.us328.us.us.us.us.us.2, %result.1.us.us.us.us.us.us.us.us.us.us332.us.us.us.us.us.1
  %rem108.us.us.us.us.us.us.us.us.us.us330.us.us.us.us.us.2 = srem i64 %mul107.us.us.us.us.us.us.us.us.us.us329.us.us.us.us.us.2, 1000000007
  br label %if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us.5

if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us.5: ; preds = %if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us.1, %if.then103.us.us.us.us.us.us.us.us.us.us321.us.us.us.us.us.2
  %result.1.us.us.us.us.us.us.us.us.us.us332.us.us.us.us.us.2 = phi i64 [ %rem108.us.us.us.us.us.us.us.us.us.us330.us.us.us.us.us.2, %if.then103.us.us.us.us.us.us.us.us.us.us321.us.us.us.us.us.2 ], [ %result.1.us.us.us.us.us.us.us.us.us.us332.us.us.us.us.us.1, %if.end109.us.us.us.us.us.us.us.us.us.us331.us.us.us.us.us.1 ]
  %add113.us.us.us.us.us.us.us.us.us.us312.us.us.us.us.us = add nsw i64 %result.1.us.us.us.us.us.us.us.us.us.us332.us.us.us.us.us.2, %ans.2240.us.us.us.us.us.us.us.us.us
  %rem114.us.us.us.us.us.us.us.us.us.us313.us.us.us.us.us = srem i64 %add113.us.us.us.us.us.us.us.us.us.us312.us.us.us.us.us, 1000000007
  br label %if.end115.us.us.us.us.us.us.us.us.us.us314.us.us.us.us.us

for.end151.split.us.split.us.split.us.split.us.us.us.us.us.us: ; preds = %if.end115.us.us.us.us.us.us.us.us.us.us314.us.us.us.us.us
  %inc159.us.us.us.us375.us.us = add nuw nsw i64 %x.sroa.17.1, 1
  %exitcond439.not = icmp eq i64 %inc159.us.us.us.us375.us.us, 13
  %or.cond524 = select i1 %cmp153, i1 true, i1 %exitcond439.not
  br i1 %or.cond524, label %for.end160.split.us.split.us.split.us.split.us376.us.us, label %for.body33.us.us.us.us369.us.us

for.end160.split.us.split.us.split.us.split.us376.us.us: ; preds = %for.end151.split.us.split.us.split.us.split.us.us.us.us.us.us
  %inc168.us.us.us = add nuw nsw i64 %x.sroa.0.2, 1
  %exitcond440.not = icmp eq i64 %inc168.us.us.us, 13
  %or.cond523 = select i1 %cmp162, i1 true, i1 %exitcond440.not
  br i1 %or.cond523, label %for.end169, label %for.body27.us.us.us

for.body27.us.us:                                 ; preds = %for.end160.split.us.split.us.split.us366.us, %for.body27.us.us.preheader
  %x.sroa.0.3 = phi i64 [ 0, %for.body27.us.us.preheader ], [ %inc168.us.us, %for.end160.split.us.split.us.split.us366.us ]
  %ans.0346.us.us = phi i64 [ 0, %for.body27.us.us.preheader ], [ %ans.6.us.us.us.us.us.us259.us.us.us.us.us, %for.end160.split.us.split.us.split.us366.us ]
  %conv105.us.us.us.us.us.us267.us.us.us.us.us = trunc i64 %x.sroa.0.3 to i32
  %add.i.us.us.us.us.us.us269.us.us.us.us.us = add nsw i32 %mul.i.us.us.us.us.us.us268.us.us.us.us.us, %conv105.us.us.us.us.us.us267.us.us.us.us.us
  %idxprom.i.us.us.us.us.us.us270.us.us.us.us.us = sext i32 %add.i.us.us.us.us.us.us269.us.us.us.us.us to i64
  %arrayidx.i.us.us.us.us.us.us271.us.us.us.us.us = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us.us.us.us270.us.us.us.us.us
  br label %for.body33.us.us.us358.us

for.body33.us.us.us358.us:                        ; preds = %for.end151.split.us.split.us.split.us304.us.us.us, %for.body27.us.us
  %x.sroa.17.2 = phi i64 [ 0, %for.body27.us.us ], [ %inc159.us.us.us365.us, %for.end151.split.us.split.us.split.us304.us.us.us ]
  %ans.1285.us.us.us359.us = phi i64 [ %ans.0346.us.us, %for.body27.us.us ], [ %ans.6.us.us.us.us.us.us259.us.us.us.us.us, %for.end151.split.us.split.us.split.us304.us.us.us ]
  %mul66.us.us.us361.us = mul nuw nsw i64 %x.sroa.17.2, 10
  %add67.us.us.us362.us = add nuw nsw i64 %mul66.us.us.us361.us, %x.sroa.0.3
  %conv105.us.us.us.us.us.us267.us.us.us.us.us.1 = trunc i64 %x.sroa.17.2 to i32
  %add.i.us.us.us.us.us.us269.us.us.us.us.us.1 = add nsw i32 %mul.i.us.us.us.us.us.us268.us.us.us.us.us.1, %conv105.us.us.us.us.us.us267.us.us.us.us.us.1
  %idxprom.i.us.us.us.us.us.us270.us.us.us.us.us.1 = sext i32 %add.i.us.us.us.us.us.us269.us.us.us.us.us.1 to i64
  %arrayidx.i.us.us.us.us.us.us271.us.us.us.us.us.1 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us.us.us.us270.us.us.us.us.us.1
  br label %for.body39.us.us.us297.us.us.us

for.body39.us.us.us297.us.us.us:                  ; preds = %for.end142.split.us.split.us.split.us.us.us.us.us.us, %for.body33.us.us.us358.us
  %x.sroa.36.1 = phi i64 [ 0, %for.body33.us.us.us358.us ], [ %inc150.us.us.us303.us.us.us, %for.end142.split.us.split.us.split.us.us.us.us.us.us ]
  %ans.2240.us.us.us298.us.us.us = phi i64 [ %ans.1285.us.us.us359.us, %for.body33.us.us.us358.us ], [ %ans.6.us.us.us.us.us.us259.us.us.us.us.us, %for.end142.split.us.split.us.split.us.us.us.us.us.us ]
  %mul71.us.us.us300.us.us.us = mul nuw nsw i64 %x.sroa.36.1, 9
  %add72.us.us.us301.us.us.us = add nuw nsw i64 %add67.us.us.us362.us, %mul71.us.us.us300.us.us.us
  %conv105.us.us.us.us.us.us267.us.us.us.us.us.2 = trunc i64 %x.sroa.36.1 to i32
  %add.i.us.us.us.us.us.us269.us.us.us.us.us.2 = add nsw i32 %mul.i.us.us.us.us.us.us268.us.us.us.us.us.2, %conv105.us.us.us.us.us.us267.us.us.us.us.us.2
  %idxprom.i.us.us.us.us.us.us270.us.us.us.us.us.2 = sext i32 %add.i.us.us.us.us.us.us269.us.us.us.us.us.2 to i64
  %arrayidx.i.us.us.us.us.us.us271.us.us.us.us.us.2 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us.us.us.us270.us.us.us.us.us.2
  br label %for.body45.us.us.us.us.us.us.us.us

for.body45.us.us.us.us.us.us.us.us:               ; preds = %if.end115.us.us.us.us.us.us258.us.us.us.us.us, %for.body39.us.us.us297.us.us.us
  %x.sroa.54.0 = phi i64 [ 0, %for.body39.us.us.us297.us.us.us ], [ %inc141.us.us.us.us.us.us.us.us, %if.end115.us.us.us.us.us.us258.us.us.us.us.us ]
  %ans.3206.us.us.us.us.us.us.us.us = phi i64 [ %ans.2240.us.us.us298.us.us.us, %for.body39.us.us.us297.us.us.us ], [ %ans.6.us.us.us.us.us.us259.us.us.us.us.us, %if.end115.us.us.us.us.us.us258.us.us.us.us.us ]
  %mul76.us.us.us.us.us.us.us.us = mul nuw nsw i64 %x.sroa.54.0, 12
  %add77.us.us.us.us.us.us.us.us = add nuw nsw i64 %add72.us.us.us301.us.us.us, %mul76.us.us.us.us.us.us.us.us
  %38 = trunc i64 %add77.us.us.us.us.us.us.us.us to i32
  %conv90.us.us.us.us.us.us251.us.us.us.us.us = add i32 %R.0.lcssa, %38
  %rem91.us.us.us.us.us.us252.us.us.us.us.us = srem i32 %conv90.us.us.us.us.us.us251.us.us.us.us.us, 13
  %cmp92.us.us.us.us.us.us253.us.us.us.us.us = icmp eq i32 %rem91.us.us.us.us.us.us252.us.us.us.us.us, 0
  br i1 %cmp92.us.us.us.us.us.us253.us.us.us.us.us, label %for.body99.us.us.us.us.us.us260.us.us.us.us.us.preheader, label %if.end115.us.us.us.us.us.us258.us.us.us.us.us

for.body99.us.us.us.us.us.us260.us.us.us.us.us.preheader: ; preds = %for.body45.us.us.us.us.us.us.us.us
  br i1 %cmp101.us.us.us.us.us.us264.us.us.us.us.us, label %if.then103.us.us.us.us.us.us265.us.us.us.us.us, label %if.end109.us.us.us.us.us.us275.us.us.us.us.us

if.end115.us.us.us.us.us.us258.us.us.us.us.us:    ; preds = %if.end109.us.us.us.us.us.us275.us.us.us.us.us.5, %for.body45.us.us.us.us.us.us.us.us
  %ans.6.us.us.us.us.us.us259.us.us.us.us.us = phi i64 [ %rem114.us.us.us.us.us.us257.us.us.us.us.us, %if.end109.us.us.us.us.us.us275.us.us.us.us.us.5 ], [ %ans.3206.us.us.us.us.us.us.us.us, %for.body45.us.us.us.us.us.us.us.us ]
  %inc141.us.us.us.us.us.us.us.us = add nuw nsw i64 %x.sroa.54.0, 1
  %exitcond433.not = icmp eq i64 %inc141.us.us.us.us.us.us.us.us, 13
  br i1 %exitcond433.not, label %for.end142.split.us.split.us.split.us.us.us.us.us.us, label %for.body45.us.us.us.us.us.us.us.us

if.then103.us.us.us.us.us.us265.us.us.us.us.us:   ; preds = %for.body99.us.us.us.us.us.us260.us.us.us.us.us.preheader
  %39 = load i64, ptr %arrayidx.i.us.us.us.us.us.us271.us.us.us.us.us, align 8, !tbaa !5
  %rem.i.us.us.us.us.us.us272.us.us.us.us.us = srem i64 %39, 1000000007
  br label %if.end109.us.us.us.us.us.us275.us.us.us.us.us

if.end109.us.us.us.us.us.us275.us.us.us.us.us:    ; preds = %if.then103.us.us.us.us.us.us265.us.us.us.us.us, %for.body99.us.us.us.us.us.us260.us.us.us.us.us.preheader
  %result.1.us.us.us.us.us.us276.us.us.us.us.us = phi i64 [ %rem.i.us.us.us.us.us.us272.us.us.us.us.us, %if.then103.us.us.us.us.us.us265.us.us.us.us.us ], [ 1, %for.body99.us.us.us.us.us.us260.us.us.us.us.us.preheader ]
  br i1 %cmp101.us.us.us.us.us.us264.us.us.us.us.us.1, label %if.then103.us.us.us.us.us.us265.us.us.us.us.us.1, label %if.end109.us.us.us.us.us.us275.us.us.us.us.us.1

if.then103.us.us.us.us.us.us265.us.us.us.us.us.1: ; preds = %if.end109.us.us.us.us.us.us275.us.us.us.us.us
  %40 = load i64, ptr %arrayidx.i.us.us.us.us.us.us271.us.us.us.us.us.1, align 8, !tbaa !5
  %rem.i.us.us.us.us.us.us272.us.us.us.us.us.1 = srem i64 %40, 1000000007
  %mul107.us.us.us.us.us.us273.us.us.us.us.us.1 = mul nsw i64 %rem.i.us.us.us.us.us.us272.us.us.us.us.us.1, %result.1.us.us.us.us.us.us276.us.us.us.us.us
  %rem108.us.us.us.us.us.us274.us.us.us.us.us.1 = srem i64 %mul107.us.us.us.us.us.us273.us.us.us.us.us.1, 1000000007
  br label %if.end109.us.us.us.us.us.us275.us.us.us.us.us.1

if.end109.us.us.us.us.us.us275.us.us.us.us.us.1:  ; preds = %if.then103.us.us.us.us.us.us265.us.us.us.us.us.1, %if.end109.us.us.us.us.us.us275.us.us.us.us.us
  %result.1.us.us.us.us.us.us276.us.us.us.us.us.1 = phi i64 [ %rem108.us.us.us.us.us.us274.us.us.us.us.us.1, %if.then103.us.us.us.us.us.us265.us.us.us.us.us.1 ], [ %result.1.us.us.us.us.us.us276.us.us.us.us.us, %if.end109.us.us.us.us.us.us275.us.us.us.us.us ]
  br i1 %cmp101.us.us.us.us.us.us264.us.us.us.us.us.2, label %if.then103.us.us.us.us.us.us265.us.us.us.us.us.2, label %if.end109.us.us.us.us.us.us275.us.us.us.us.us.2

if.then103.us.us.us.us.us.us265.us.us.us.us.us.2: ; preds = %if.end109.us.us.us.us.us.us275.us.us.us.us.us.1
  %41 = load i64, ptr %arrayidx.i.us.us.us.us.us.us271.us.us.us.us.us.2, align 8, !tbaa !5
  %rem.i.us.us.us.us.us.us272.us.us.us.us.us.2 = srem i64 %41, 1000000007
  %mul107.us.us.us.us.us.us273.us.us.us.us.us.2 = mul nsw i64 %rem.i.us.us.us.us.us.us272.us.us.us.us.us.2, %result.1.us.us.us.us.us.us276.us.us.us.us.us.1
  %rem108.us.us.us.us.us.us274.us.us.us.us.us.2 = srem i64 %mul107.us.us.us.us.us.us273.us.us.us.us.us.2, 1000000007
  br label %if.end109.us.us.us.us.us.us275.us.us.us.us.us.2

if.end109.us.us.us.us.us.us275.us.us.us.us.us.2:  ; preds = %if.then103.us.us.us.us.us.us265.us.us.us.us.us.2, %if.end109.us.us.us.us.us.us275.us.us.us.us.us.1
  %result.1.us.us.us.us.us.us276.us.us.us.us.us.2 = phi i64 [ %rem108.us.us.us.us.us.us274.us.us.us.us.us.2, %if.then103.us.us.us.us.us.us265.us.us.us.us.us.2 ], [ %result.1.us.us.us.us.us.us276.us.us.us.us.us.1, %if.end109.us.us.us.us.us.us275.us.us.us.us.us.1 ]
  br i1 %cmp101.us.us.us.us.us.us264.us.us.us.us.us.3, label %if.then103.us.us.us.us.us.us265.us.us.us.us.us.3, label %if.end109.us.us.us.us.us.us275.us.us.us.us.us.5

if.then103.us.us.us.us.us.us265.us.us.us.us.us.3: ; preds = %if.end109.us.us.us.us.us.us275.us.us.us.us.us.2
  %conv105.us.us.us.us.us.us267.us.us.us.us.us.3 = trunc i64 %x.sroa.54.0 to i32
  %add.i.us.us.us.us.us.us269.us.us.us.us.us.3 = add nsw i32 %mul.i.us.us.us.us.us.us268.us.us.us.us.us.3, %conv105.us.us.us.us.us.us267.us.us.us.us.us.3
  %idxprom.i.us.us.us.us.us.us270.us.us.us.us.us.3 = sext i32 %add.i.us.us.us.us.us.us269.us.us.us.us.us.3 to i64
  %arrayidx.i.us.us.us.us.us.us271.us.us.us.us.us.3 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us.us.us.us270.us.us.us.us.us.3
  %42 = load i64, ptr %arrayidx.i.us.us.us.us.us.us271.us.us.us.us.us.3, align 8, !tbaa !5
  %rem.i.us.us.us.us.us.us272.us.us.us.us.us.3 = srem i64 %42, 1000000007
  %mul107.us.us.us.us.us.us273.us.us.us.us.us.3 = mul nsw i64 %rem.i.us.us.us.us.us.us272.us.us.us.us.us.3, %result.1.us.us.us.us.us.us276.us.us.us.us.us.2
  %rem108.us.us.us.us.us.us274.us.us.us.us.us.3 = srem i64 %mul107.us.us.us.us.us.us273.us.us.us.us.us.3, 1000000007
  br label %if.end109.us.us.us.us.us.us275.us.us.us.us.us.5

if.end109.us.us.us.us.us.us275.us.us.us.us.us.5:  ; preds = %if.then103.us.us.us.us.us.us265.us.us.us.us.us.3, %if.end109.us.us.us.us.us.us275.us.us.us.us.us.2
  %result.1.us.us.us.us.us.us276.us.us.us.us.us.3 = phi i64 [ %rem108.us.us.us.us.us.us274.us.us.us.us.us.3, %if.then103.us.us.us.us.us.us265.us.us.us.us.us.3 ], [ %result.1.us.us.us.us.us.us276.us.us.us.us.us.2, %if.end109.us.us.us.us.us.us275.us.us.us.us.us.2 ]
  %add113.us.us.us.us.us.us256.us.us.us.us.us = add nsw i64 %result.1.us.us.us.us.us.us276.us.us.us.us.us.3, %ans.3206.us.us.us.us.us.us.us.us
  %rem114.us.us.us.us.us.us257.us.us.us.us.us = srem i64 %add113.us.us.us.us.us.us256.us.us.us.us.us, 1000000007
  br label %if.end115.us.us.us.us.us.us258.us.us.us.us.us

for.end142.split.us.split.us.split.us.us.us.us.us.us: ; preds = %if.end115.us.us.us.us.us.us258.us.us.us.us.us
  %inc150.us.us.us303.us.us.us = add nuw nsw i64 %x.sroa.36.1, 1
  %exitcond434.not = icmp eq i64 %inc150.us.us.us303.us.us.us, 13
  %or.cond527 = select i1 %cmp144, i1 true, i1 %exitcond434.not
  br i1 %or.cond527, label %for.end151.split.us.split.us.split.us304.us.us.us, label %for.body39.us.us.us297.us.us.us

for.end151.split.us.split.us.split.us304.us.us.us: ; preds = %for.end142.split.us.split.us.split.us.us.us.us.us.us
  %inc159.us.us.us365.us = add nuw nsw i64 %x.sroa.17.2, 1
  %exitcond435.not = icmp eq i64 %inc159.us.us.us365.us, 13
  %or.cond526 = select i1 %cmp153, i1 true, i1 %exitcond435.not
  br i1 %or.cond526, label %for.end160.split.us.split.us.split.us366.us, label %for.body33.us.us.us358.us

for.end160.split.us.split.us.split.us366.us:      ; preds = %for.end151.split.us.split.us.split.us304.us.us.us
  %inc168.us.us = add nuw nsw i64 %x.sroa.0.3, 1
  %exitcond436.not = icmp eq i64 %inc168.us.us, 13
  %or.cond525 = select i1 %cmp162, i1 true, i1 %exitcond436.not
  br i1 %or.cond525, label %for.end169, label %for.body27.us.us

for.body27.us:                                    ; preds = %for.end160.split.us.split.us355, %for.body27.us.preheader
  %x.sroa.0.4 = phi i64 [ 0, %for.body27.us.preheader ], [ %inc168.us, %for.end160.split.us.split.us355 ]
  %ans.0346.us = phi i64 [ 0, %for.body27.us.preheader ], [ %ans.6.us.us.us215.us.us.us, %for.end160.split.us.split.us355 ]
  %conv105.us.us.us223.us.us.us = trunc i64 %x.sroa.0.4 to i32
  %add.i.us.us.us225.us.us.us = add nsw i32 %mul.i.us.us.us224.us.us.us, %conv105.us.us.us223.us.us.us
  %idxprom.i.us.us.us226.us.us.us = sext i32 %add.i.us.us.us225.us.us.us to i64
  %arrayidx.i.us.us.us227.us.us.us = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us226.us.us.us
  br label %for.body33.us.us347

for.body33.us.us347:                              ; preds = %for.end151.split.us.split.us294.us, %for.body27.us
  %x.sroa.17.3 = phi i64 [ 0, %for.body27.us ], [ %inc159.us.us354, %for.end151.split.us.split.us294.us ]
  %ans.1285.us.us348 = phi i64 [ %ans.0346.us, %for.body27.us ], [ %ans.6.us.us.us215.us.us.us, %for.end151.split.us.split.us294.us ]
  %mul66.us.us350 = mul nuw nsw i64 %x.sroa.17.3, 10
  %add67.us.us351 = add nuw nsw i64 %mul66.us.us350, %x.sroa.0.4
  %conv105.us.us.us223.us.us.us.1 = trunc i64 %x.sroa.17.3 to i32
  %add.i.us.us.us225.us.us.us.1 = add nsw i32 %mul.i.us.us.us224.us.us.us.1, %conv105.us.us.us223.us.us.us.1
  %idxprom.i.us.us.us226.us.us.us.1 = sext i32 %add.i.us.us.us225.us.us.us.1 to i64
  %arrayidx.i.us.us.us227.us.us.us.1 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us226.us.us.us.1
  br label %for.body39.us.us286.us

for.body39.us.us286.us:                           ; preds = %for.end142.split.us.split.us248.us.us, %for.body33.us.us347
  %x.sroa.36.2 = phi i64 [ 0, %for.body33.us.us347 ], [ %inc150.us.us293.us, %for.end142.split.us.split.us248.us.us ]
  %ans.2240.us.us287.us = phi i64 [ %ans.1285.us.us348, %for.body33.us.us347 ], [ %ans.6.us.us.us215.us.us.us, %for.end142.split.us.split.us248.us.us ]
  %mul71.us.us289.us = mul nuw nsw i64 %x.sroa.36.2, 9
  %add72.us.us290.us = add nuw nsw i64 %add67.us.us351, %mul71.us.us289.us
  %conv105.us.us.us223.us.us.us.2 = trunc i64 %x.sroa.36.2 to i32
  %add.i.us.us.us225.us.us.us.2 = add nsw i32 %mul.i.us.us.us224.us.us.us.2, %conv105.us.us.us223.us.us.us.2
  %idxprom.i.us.us.us226.us.us.us.2 = sext i32 %add.i.us.us.us225.us.us.us.2 to i64
  %arrayidx.i.us.us.us227.us.us.us.2 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us226.us.us.us.2
  br label %for.body45.us.us241.us.us

for.body45.us.us241.us.us:                        ; preds = %for.end133.split.us.split.us.us.us.us, %for.body39.us.us286.us
  %x.sroa.54.1 = phi i64 [ 0, %for.body39.us.us286.us ], [ %inc141.us.us247.us.us, %for.end133.split.us.split.us.us.us.us ]
  %ans.3206.us.us242.us.us = phi i64 [ %ans.2240.us.us287.us, %for.body39.us.us286.us ], [ %ans.6.us.us.us215.us.us.us, %for.end133.split.us.split.us.us.us.us ]
  %mul76.us.us244.us.us = mul nuw nsw i64 %x.sroa.54.1, 12
  %add77.us.us245.us.us = add nuw nsw i64 %add72.us.us290.us, %mul76.us.us244.us.us
  %conv105.us.us.us223.us.us.us.3 = trunc i64 %x.sroa.54.1 to i32
  %add.i.us.us.us225.us.us.us.3 = add nsw i32 %mul.i.us.us.us224.us.us.us.3, %conv105.us.us.us223.us.us.us.3
  %idxprom.i.us.us.us226.us.us.us.3 = sext i32 %add.i.us.us.us225.us.us.us.3 to i64
  %arrayidx.i.us.us.us227.us.us.us.3 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us226.us.us.us.3
  br label %for.body51.us.us.us.us.us

for.body51.us.us.us.us.us:                        ; preds = %if.end115.us.us.us214.us.us.us, %for.body45.us.us241.us.us
  %x.sroa.71.0 = phi i64 [ 0, %for.body45.us.us241.us.us ], [ %inc132.us.us.us.us.us, %if.end115.us.us.us214.us.us.us ]
  %ans.4203.us.us.us.us.us = phi i64 [ %ans.3206.us.us242.us.us, %for.body45.us.us241.us.us ], [ %ans.6.us.us.us215.us.us.us, %if.end115.us.us.us214.us.us.us ]
  %mul81.us.us.us.us.us = mul nuw nsw i64 %x.sroa.71.0, 3
  %add82.us.us.us.us.us = add nuw nsw i64 %add77.us.us245.us.us, %mul81.us.us.us.us.us
  %43 = trunc i64 %add82.us.us.us.us.us to i32
  %conv90.us.us.us207.us.us.us = add i32 %R.0.lcssa, %43
  %rem91.us.us.us208.us.us.us = srem i32 %conv90.us.us.us207.us.us.us, 13
  %cmp92.us.us.us209.us.us.us = icmp eq i32 %rem91.us.us.us208.us.us.us, 0
  br i1 %cmp92.us.us.us209.us.us.us, label %for.body99.us.us.us216.us.us.us.preheader, label %if.end115.us.us.us214.us.us.us

for.body99.us.us.us216.us.us.us.preheader:        ; preds = %for.body51.us.us.us.us.us
  br i1 %cmp101.us.us.us220.us.us.us, label %if.then103.us.us.us221.us.us.us, label %if.end109.us.us.us231.us.us.us

if.end115.us.us.us214.us.us.us:                   ; preds = %if.end109.us.us.us231.us.us.us.5, %for.body51.us.us.us.us.us
  %ans.6.us.us.us215.us.us.us = phi i64 [ %rem114.us.us.us213.us.us.us, %if.end109.us.us.us231.us.us.us.5 ], [ %ans.4203.us.us.us.us.us, %for.body51.us.us.us.us.us ]
  %inc132.us.us.us.us.us = add nuw nsw i64 %x.sroa.71.0, 1
  %exitcond427.not = icmp eq i64 %inc132.us.us.us.us.us, 13
  br i1 %exitcond427.not, label %for.end133.split.us.split.us.us.us.us, label %for.body51.us.us.us.us.us

if.then103.us.us.us221.us.us.us:                  ; preds = %for.body99.us.us.us216.us.us.us.preheader
  %44 = load i64, ptr %arrayidx.i.us.us.us227.us.us.us, align 8, !tbaa !5
  %rem.i.us.us.us228.us.us.us = srem i64 %44, 1000000007
  br label %if.end109.us.us.us231.us.us.us

if.end109.us.us.us231.us.us.us:                   ; preds = %if.then103.us.us.us221.us.us.us, %for.body99.us.us.us216.us.us.us.preheader
  %result.1.us.us.us232.us.us.us = phi i64 [ %rem.i.us.us.us228.us.us.us, %if.then103.us.us.us221.us.us.us ], [ 1, %for.body99.us.us.us216.us.us.us.preheader ]
  br i1 %cmp101.us.us.us220.us.us.us.1, label %if.then103.us.us.us221.us.us.us.1, label %if.end109.us.us.us231.us.us.us.1

if.then103.us.us.us221.us.us.us.1:                ; preds = %if.end109.us.us.us231.us.us.us
  %45 = load i64, ptr %arrayidx.i.us.us.us227.us.us.us.1, align 8, !tbaa !5
  %rem.i.us.us.us228.us.us.us.1 = srem i64 %45, 1000000007
  %mul107.us.us.us229.us.us.us.1 = mul nsw i64 %rem.i.us.us.us228.us.us.us.1, %result.1.us.us.us232.us.us.us
  %rem108.us.us.us230.us.us.us.1 = srem i64 %mul107.us.us.us229.us.us.us.1, 1000000007
  br label %if.end109.us.us.us231.us.us.us.1

if.end109.us.us.us231.us.us.us.1:                 ; preds = %if.then103.us.us.us221.us.us.us.1, %if.end109.us.us.us231.us.us.us
  %result.1.us.us.us232.us.us.us.1 = phi i64 [ %rem108.us.us.us230.us.us.us.1, %if.then103.us.us.us221.us.us.us.1 ], [ %result.1.us.us.us232.us.us.us, %if.end109.us.us.us231.us.us.us ]
  br i1 %cmp101.us.us.us220.us.us.us.2, label %if.then103.us.us.us221.us.us.us.2, label %if.end109.us.us.us231.us.us.us.2

if.then103.us.us.us221.us.us.us.2:                ; preds = %if.end109.us.us.us231.us.us.us.1
  %46 = load i64, ptr %arrayidx.i.us.us.us227.us.us.us.2, align 8, !tbaa !5
  %rem.i.us.us.us228.us.us.us.2 = srem i64 %46, 1000000007
  %mul107.us.us.us229.us.us.us.2 = mul nsw i64 %rem.i.us.us.us228.us.us.us.2, %result.1.us.us.us232.us.us.us.1
  %rem108.us.us.us230.us.us.us.2 = srem i64 %mul107.us.us.us229.us.us.us.2, 1000000007
  br label %if.end109.us.us.us231.us.us.us.2

if.end109.us.us.us231.us.us.us.2:                 ; preds = %if.then103.us.us.us221.us.us.us.2, %if.end109.us.us.us231.us.us.us.1
  %result.1.us.us.us232.us.us.us.2 = phi i64 [ %rem108.us.us.us230.us.us.us.2, %if.then103.us.us.us221.us.us.us.2 ], [ %result.1.us.us.us232.us.us.us.1, %if.end109.us.us.us231.us.us.us.1 ]
  br i1 %cmp101.us.us.us220.us.us.us.3, label %if.then103.us.us.us221.us.us.us.3, label %if.end109.us.us.us231.us.us.us.3

if.then103.us.us.us221.us.us.us.3:                ; preds = %if.end109.us.us.us231.us.us.us.2
  %47 = load i64, ptr %arrayidx.i.us.us.us227.us.us.us.3, align 8, !tbaa !5
  %rem.i.us.us.us228.us.us.us.3 = srem i64 %47, 1000000007
  %mul107.us.us.us229.us.us.us.3 = mul nsw i64 %rem.i.us.us.us228.us.us.us.3, %result.1.us.us.us232.us.us.us.2
  %rem108.us.us.us230.us.us.us.3 = srem i64 %mul107.us.us.us229.us.us.us.3, 1000000007
  br label %if.end109.us.us.us231.us.us.us.3

if.end109.us.us.us231.us.us.us.3:                 ; preds = %if.then103.us.us.us221.us.us.us.3, %if.end109.us.us.us231.us.us.us.2
  %result.1.us.us.us232.us.us.us.3 = phi i64 [ %rem108.us.us.us230.us.us.us.3, %if.then103.us.us.us221.us.us.us.3 ], [ %result.1.us.us.us232.us.us.us.2, %if.end109.us.us.us231.us.us.us.2 ]
  br i1 %cmp101.us.us.us220.us.us.us.4, label %if.then103.us.us.us221.us.us.us.4, label %if.end109.us.us.us231.us.us.us.5

if.then103.us.us.us221.us.us.us.4:                ; preds = %if.end109.us.us.us231.us.us.us.3
  %conv105.us.us.us223.us.us.us.4 = trunc i64 %x.sroa.71.0 to i32
  %add.i.us.us.us225.us.us.us.4 = add nsw i32 %mul.i.us.us.us224.us.us.us.4, %conv105.us.us.us223.us.us.us.4
  %idxprom.i.us.us.us226.us.us.us.4 = sext i32 %add.i.us.us.us225.us.us.us.4 to i64
  %arrayidx.i.us.us.us227.us.us.us.4 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.us.us.us226.us.us.us.4
  %48 = load i64, ptr %arrayidx.i.us.us.us227.us.us.us.4, align 8, !tbaa !5
  %rem.i.us.us.us228.us.us.us.4 = srem i64 %48, 1000000007
  %mul107.us.us.us229.us.us.us.4 = mul nsw i64 %rem.i.us.us.us228.us.us.us.4, %result.1.us.us.us232.us.us.us.3
  %rem108.us.us.us230.us.us.us.4 = srem i64 %mul107.us.us.us229.us.us.us.4, 1000000007
  br label %if.end109.us.us.us231.us.us.us.5

if.end109.us.us.us231.us.us.us.5:                 ; preds = %if.end109.us.us.us231.us.us.us.3, %if.then103.us.us.us221.us.us.us.4
  %result.1.us.us.us232.us.us.us.4 = phi i64 [ %rem108.us.us.us230.us.us.us.4, %if.then103.us.us.us221.us.us.us.4 ], [ %result.1.us.us.us232.us.us.us.3, %if.end109.us.us.us231.us.us.us.3 ]
  %add113.us.us.us212.us.us.us = add nsw i64 %result.1.us.us.us232.us.us.us.4, %ans.4203.us.us.us.us.us
  %rem114.us.us.us213.us.us.us = srem i64 %add113.us.us.us212.us.us.us, 1000000007
  br label %if.end115.us.us.us214.us.us.us

for.end133.split.us.split.us.us.us.us:            ; preds = %if.end115.us.us.us214.us.us.us
  %inc141.us.us247.us.us = add nuw nsw i64 %x.sroa.54.1, 1
  %exitcond428.not = icmp eq i64 %inc141.us.us247.us.us, 13
  %or.cond531 = select i1 %cmp135, i1 true, i1 %exitcond428.not
  br i1 %or.cond531, label %for.end142.split.us.split.us248.us.us, label %for.body45.us.us241.us.us

for.end142.split.us.split.us248.us.us:            ; preds = %for.end133.split.us.split.us.us.us.us
  %inc150.us.us293.us = add nuw nsw i64 %x.sroa.36.2, 1
  %exitcond429.not = icmp eq i64 %inc150.us.us293.us, 13
  %or.cond530 = select i1 %cmp144, i1 true, i1 %exitcond429.not
  br i1 %or.cond530, label %for.end151.split.us.split.us294.us, label %for.body39.us.us286.us

for.end151.split.us.split.us294.us:               ; preds = %for.end142.split.us.split.us248.us.us
  %inc159.us.us354 = add nuw nsw i64 %x.sroa.17.3, 1
  %exitcond430.not = icmp eq i64 %inc159.us.us354, 13
  %or.cond529 = select i1 %cmp153, i1 true, i1 %exitcond430.not
  br i1 %or.cond529, label %for.end160.split.us.split.us355, label %for.body33.us.us347

for.end160.split.us.split.us355:                  ; preds = %for.end151.split.us.split.us294.us
  %inc168.us = add nuw nsw i64 %x.sroa.0.4, 1
  %exitcond431.not = icmp eq i64 %inc168.us, 13
  %or.cond528 = select i1 %cmp162, i1 true, i1 %exitcond431.not
  br i1 %or.cond528, label %for.end169, label %for.body27.us

for.body:                                         ; preds = %for.body.preheader, %if.end
  %indvars.iv = phi i64 [ %0, %for.body.preheader ], [ %indvars.iv.next, %if.end ]
  %R.0197 = phi i32 [ 0, %for.body.preheader ], [ %R.1, %if.end ]
  %49 = sub nuw nsw i64 %0, %indvars.iv
  %arrayidx = getelementptr inbounds [100002 x i8], ptr %S, i64 0, i64 %indvars.iv
  %50 = load i8, ptr %arrayidx, align 1, !tbaa !11
  %cmp7 = icmp eq i8 %50, 63
  br i1 %cmp7, label %if.then, label %if.else

if.then:                                          ; preds = %for.body
  %51 = trunc i64 %49 to i32
  %rem.urem = urem i32 %51, 6
  %idxprom9 = zext i32 %rem.urem to i64
  %arrayidx10 = getelementptr inbounds [6 x i32], ptr %var_counts, i64 0, i64 %idxprom9
  %52 = load i32, ptr %arrayidx10, align 4, !tbaa !9
  %inc = add nsw i32 %52, 1
  store i32 %inc, ptr %arrayidx10, align 4, !tbaa !9
  br label %if.end

if.else:                                          ; preds = %for.body
  %conv6 = sext i8 %50 to i32
  %sub12 = add nsw i32 %conv6, -48
  %53 = trunc i64 %49 to i32
  %rem13.urem = urem i32 %53, 6
  %idxprom14 = zext i32 %rem13.urem to i64
  %arrayidx15 = getelementptr inbounds [6 x i32], ptr @__const.main.r, i64 0, i64 %idxprom14
  %54 = load i32, ptr %arrayidx15, align 4, !tbaa !9
  %mul = mul nsw i32 %54, %sub12
  %add = add nsw i32 %mul, %R.0197
  br label %if.end

if.end:                                           ; preds = %if.else, %if.then
  %R.1 = phi i32 [ %R.0197, %if.then ], [ %add, %if.else ]
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %cmp = icmp sgt i64 %indvars.iv, 0
  br i1 %cmp, label %for.body, label %for.cond.cleanup.loopexit

for.body27:                                       ; preds = %for.end160.split, %for.body27.preheader
  %x.sroa.0.5 = phi i64 [ 0, %for.body27.preheader ], [ %inc168, %for.end160.split ]
  %ans.0346 = phi i64 [ 0, %for.body27.preheader ], [ %ans.6, %for.end160.split ]
  %conv105 = trunc i64 %x.sroa.0.5 to i32
  %add.i = add nsw i32 %mul.i, %conv105
  %idxprom.i = sext i32 %add.i to i64
  %arrayidx.i = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i
  br label %for.body33

for.body33:                                       ; preds = %for.end151.split, %for.body27
  %x.sroa.17.4 = phi i64 [ 0, %for.body27 ], [ %inc159, %for.end151.split ]
  %ans.1285 = phi i64 [ %ans.0346, %for.body27 ], [ %ans.6, %for.end151.split ]
  %mul66 = mul nuw nsw i64 %x.sroa.17.4, 10
  %add67 = add nuw nsw i64 %mul66, %x.sroa.0.5
  %conv105.1 = trunc i64 %x.sroa.17.4 to i32
  %add.i.1 = add nsw i32 %mul.i.1, %conv105.1
  %idxprom.i.1 = sext i32 %add.i.1 to i64
  %arrayidx.i.1 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.1
  br label %for.body39

for.body39:                                       ; preds = %for.end142.split, %for.body33
  %x.sroa.36.3 = phi i64 [ 0, %for.body33 ], [ %inc150, %for.end142.split ]
  %ans.2240 = phi i64 [ %ans.1285, %for.body33 ], [ %ans.6, %for.end142.split ]
  %mul71 = mul nuw nsw i64 %x.sroa.36.3, 9
  %add72 = add nuw nsw i64 %add67, %mul71
  %conv105.2 = trunc i64 %x.sroa.36.3 to i32
  %add.i.2 = add nsw i32 %mul.i.2, %conv105.2
  %idxprom.i.2 = sext i32 %add.i.2 to i64
  %arrayidx.i.2 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.2
  br label %for.body45

for.body45:                                       ; preds = %for.end133.split, %for.body39
  %x.sroa.54.2 = phi i64 [ 0, %for.body39 ], [ %inc141, %for.end133.split ]
  %ans.3206 = phi i64 [ %ans.2240, %for.body39 ], [ %ans.6, %for.end133.split ]
  %mul76 = mul nuw nsw i64 %x.sroa.54.2, 12
  %add77 = add nuw nsw i64 %add72, %mul76
  %conv105.3 = trunc i64 %x.sroa.54.2 to i32
  %add.i.3 = add nsw i32 %mul.i.3, %conv105.3
  %idxprom.i.3 = sext i32 %add.i.3 to i64
  %arrayidx.i.3 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.3
  br label %for.body51

for.body51:                                       ; preds = %for.end124.split, %for.body45
  %x.sroa.71.1 = phi i64 [ 0, %for.body45 ], [ %inc132, %for.end124.split ]
  %ans.4203 = phi i64 [ %ans.3206, %for.body45 ], [ %ans.6, %for.end124.split ]
  %mul81 = mul nuw nsw i64 %x.sroa.71.1, 3
  %add82 = add nuw nsw i64 %add77, %mul81
  %conv105.4 = trunc i64 %x.sroa.71.1 to i32
  %add.i.4 = add nsw i32 %mul.i.4, %conv105.4
  %idxprom.i.4 = sext i32 %add.i.4 to i64
  %arrayidx.i.4 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.4
  br label %for.body57

for.body57:                                       ; preds = %for.body51, %if.end115
  %x.sroa.87.0 = phi i64 [ 0, %for.body51 ], [ %inc123, %if.end115 ]
  %ans.5201 = phi i64 [ %ans.4203, %for.body51 ], [ %ans.6, %if.end115 ]
  %mul86 = shl nsw i64 %x.sroa.87.0, 2
  %add87 = add nuw nsw i64 %add82, %mul86
  %55 = trunc i64 %add87 to i32
  %conv90 = add i32 %R.0.lcssa, %55
  %rem91 = srem i32 %conv90, 13
  %cmp92 = icmp eq i32 %rem91, 0
  br i1 %cmp92, label %for.body99.preheader, label %if.end115

for.body99.preheader:                             ; preds = %for.body57
  br i1 %cmp101, label %if.then103, label %if.end109

if.then103:                                       ; preds = %for.body99.preheader
  %56 = load i64, ptr %arrayidx.i, align 8, !tbaa !5
  %rem.i = srem i64 %56, 1000000007
  br label %if.end109

if.end109:                                        ; preds = %if.then103, %for.body99.preheader
  %result.1 = phi i64 [ %rem.i, %if.then103 ], [ 1, %for.body99.preheader ]
  br i1 %cmp101.1, label %if.then103.1, label %if.end109.1

if.then103.1:                                     ; preds = %if.end109
  %57 = load i64, ptr %arrayidx.i.1, align 8, !tbaa !5
  %rem.i.1 = srem i64 %57, 1000000007
  %mul107.1 = mul nsw i64 %rem.i.1, %result.1
  %rem108.1 = srem i64 %mul107.1, 1000000007
  br label %if.end109.1

if.end109.1:                                      ; preds = %if.then103.1, %if.end109
  %result.1.1 = phi i64 [ %rem108.1, %if.then103.1 ], [ %result.1, %if.end109 ]
  br i1 %cmp101.2, label %if.then103.2, label %if.end109.2

if.then103.2:                                     ; preds = %if.end109.1
  %58 = load i64, ptr %arrayidx.i.2, align 8, !tbaa !5
  %rem.i.2 = srem i64 %58, 1000000007
  %mul107.2 = mul nsw i64 %rem.i.2, %result.1.1
  %rem108.2 = srem i64 %mul107.2, 1000000007
  br label %if.end109.2

if.end109.2:                                      ; preds = %if.then103.2, %if.end109.1
  %result.1.2 = phi i64 [ %rem108.2, %if.then103.2 ], [ %result.1.1, %if.end109.1 ]
  br i1 %cmp101.3, label %if.then103.3, label %if.end109.3

if.then103.3:                                     ; preds = %if.end109.2
  %59 = load i64, ptr %arrayidx.i.3, align 8, !tbaa !5
  %rem.i.3 = srem i64 %59, 1000000007
  %mul107.3 = mul nsw i64 %rem.i.3, %result.1.2
  %rem108.3 = srem i64 %mul107.3, 1000000007
  br label %if.end109.3

if.end109.3:                                      ; preds = %if.then103.3, %if.end109.2
  %result.1.3 = phi i64 [ %rem108.3, %if.then103.3 ], [ %result.1.2, %if.end109.2 ]
  br i1 %cmp101.4, label %if.then103.4, label %if.end109.4

if.then103.4:                                     ; preds = %if.end109.3
  %60 = load i64, ptr %arrayidx.i.4, align 8, !tbaa !5
  %rem.i.4 = srem i64 %60, 1000000007
  %mul107.4 = mul nsw i64 %rem.i.4, %result.1.3
  %rem108.4 = srem i64 %mul107.4, 1000000007
  br label %if.end109.4

if.end109.4:                                      ; preds = %if.then103.4, %if.end109.3
  %result.1.4 = phi i64 [ %rem108.4, %if.then103.4 ], [ %result.1.3, %if.end109.3 ]
  br i1 %cmp101.5, label %if.then103.5, label %if.end109.5

if.then103.5:                                     ; preds = %if.end109.4
  %conv105.5 = trunc i64 %x.sroa.87.0 to i32
  %add.i.5 = add nsw i32 %mul.i.5, %conv105.5
  %idxprom.i.5 = sext i32 %add.i.5 to i64
  %arrayidx.i.5 = getelementptr inbounds i64, ptr %call19, i64 %idxprom.i.5
  %61 = load i64, ptr %arrayidx.i.5, align 8, !tbaa !5
  %rem.i.5 = srem i64 %61, 1000000007
  %mul107.5 = mul nsw i64 %rem.i.5, %result.1.4
  %rem108.5 = srem i64 %mul107.5, 1000000007
  br label %if.end109.5

if.end109.5:                                      ; preds = %if.then103.5, %if.end109.4
  %result.1.5 = phi i64 [ %rem108.5, %if.then103.5 ], [ %result.1.4, %if.end109.4 ]
  %add113 = add nsw i64 %result.1.5, %ans.5201
  %rem114 = srem i64 %add113, 1000000007
  br label %if.end115

if.end115:                                        ; preds = %if.end109.5, %for.body57
  %ans.6 = phi i64 [ %rem114, %if.end109.5 ], [ %ans.5201, %for.body57 ]
  %inc123 = add nuw nsw i64 %x.sroa.87.0, 1
  %exitcond.not = icmp eq i64 %inc123, 13
  br i1 %exitcond.not, label %for.end124.split, label %for.body57

for.end124.split:                                 ; preds = %if.end115
  %inc132 = add nuw nsw i64 %x.sroa.71.1, 1
  %exitcond421.not = icmp eq i64 %inc132, 13
  %or.cond536 = select i1 %cmp126, i1 true, i1 %exitcond421.not
  br i1 %or.cond536, label %for.end133.split, label %for.body51

for.end133.split:                                 ; preds = %for.end124.split
  %inc141 = add nuw nsw i64 %x.sroa.54.2, 1
  %exitcond422.not = icmp eq i64 %inc141, 13
  %or.cond535 = select i1 %cmp135, i1 true, i1 %exitcond422.not
  br i1 %or.cond535, label %for.end142.split, label %for.body45

for.end142.split:                                 ; preds = %for.end133.split
  %inc150 = add nuw nsw i64 %x.sroa.36.3, 1
  %exitcond423.not = icmp eq i64 %inc150, 13
  %or.cond534 = select i1 %cmp144, i1 true, i1 %exitcond423.not
  br i1 %or.cond534, label %for.end151.split, label %for.body39

for.end151.split:                                 ; preds = %for.end142.split
  %inc159 = add nuw nsw i64 %x.sroa.17.4, 1
  %exitcond424.not = icmp eq i64 %inc159, 13
  %or.cond533 = select i1 %cmp153, i1 true, i1 %exitcond424.not
  br i1 %or.cond533, label %for.end160.split, label %for.body33

for.end160.split:                                 ; preds = %for.end151.split
  %inc168 = add nuw nsw i64 %x.sroa.0.5, 1
  %exitcond425.not = icmp eq i64 %inc168, 13
  %or.cond532 = select i1 %cmp162, i1 true, i1 %exitcond425.not
  br i1 %or.cond532, label %for.end169, label %for.body27

for.end169:                                       ; preds = %for.end160.split, %for.end160.split.us.split.us355, %for.end160.split.us.split.us.split.us366.us, %for.end160.split.us.split.us.split.us.split.us376.us.us, %for.end160.split.us.split.us.split.us.split.us.split.us.us.us.us, %if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, %for.body27.us.us.us.us.us.us
  %.us-phi409 = phi i64 [ %spec.select, %for.body27.us.us.us.us.us.us ], [ %ans.6.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us, %if.end115.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us ], [ %ans.6.us.us.us.us.us.us.us.us.us.us.us.us.us.us.us387.us.us.us, %for.end160.split.us.split.us.split.us.split.us.split.us.us.us.us ], [ %ans.6.us.us.us.us.us.us.us.us.us.us315.us.us.us.us.us, %for.end160.split.us.split.us.split.us.split.us376.us.us ], [ %ans.6.us.us.us.us.us.us259.us.us.us.us.us, %for.end160.split.us.split.us.split.us366.us ], [ %ans.6.us.us.us215.us.us.us, %for.end160.split.us.split.us355 ], [ %ans.6, %for.end160.split ]
  %call170 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, i64 noundef %.us-phi409)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %var_counts) #8
  call void @llvm.lifetime.end.p0(i64 100002, ptr nonnull %S) #8
  ret i32 0
}

; Function Attrs: nofree nounwind
declare noundef i32 @__isoc99_scanf(ptr nocapture noundef readonly, ...) local_unnamed_addr #4

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #7

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #4

attributes #0 = { nofree nosync nounwind memory(argmem: readwrite) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nofree nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { nounwind willreturn memory(read) }
attributes #10 = { nounwind allocsize(0) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"Ubuntu clang version 18.0.0 (++20231007042255+8abb2ace888b-1~exp1~20231007042414.1230)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
