#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int count_arr(char *, int);
int /*<<< orphan*/ printf(char *, char);
int /*<<< orphan*/ scanf(char *, ...);
int main() {
  char a[100];
  scanf("%s", a);
  int i, n, t;
  scanf("%d", &n);
  t = count_arr(a, 100);
  if (n >= 26) {
    n = n % 26;
  }
  for (i = 0; i < t; i++) {
    if (a[i] + n >= 'z') {
      a[i] = 'a';
      a[i] = a[i] + n - ('z' - a[i]);
    }
    a[i] = a[i] + n;
  }
  for (i = 0; i < t; i++) {
    printf("%c", a[i]);
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x70(%rbp),%rsi
lea    0xeb3(%rip),%rdi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xea8(%rip),%rdi
lea    -0x78(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    -0x70(%rbp),%rdi
mov    $0x64,%esi
call   1030 <count_arr@plt>
mov    %eax,-0x7c(%rbp)
cmpl   $0x1a,-0x78(%rbp)
jl     118f <main+0x5f>
mov    -0x78(%rbp),%eax
mov    $0x1a,%ecx
cltd
idiv   %ecx
mov    %edx,-0x78(%rbp)
movl   $0x0,-0x74(%rbp)
mov    -0x74(%rbp),%eax
cmp    -0x7c(%rbp),%eax
jge    120c <main+0xdc>
movslq -0x74(%rbp),%rax
movsbl -0x70(%rbp,%rax,1),%eax
add    -0x78(%rbp),%eax
cmp    $0x7a,%eax
jl     11e8 <main+0xb8>
movslq -0x74(%rbp),%rax
movb   $0x61,-0x70(%rbp,%rax,1)
movslq -0x74(%rbp),%rax
movsbl -0x70(%rbp,%rax,1),%eax
add    -0x78(%rbp),%eax
movslq -0x74(%rbp),%rcx
movsbl -0x70(%rbp,%rcx,1),%edx
mov    $0x7a,%ecx
sub    %edx,%ecx
sub    %ecx,%eax
mov    %al,%cl
movslq -0x74(%rbp),%rax
mov    %cl,-0x70(%rbp,%rax,1)
movslq -0x74(%rbp),%rax
movsbl -0x70(%rbp,%rax,1),%eax
add    -0x78(%rbp),%eax
mov    %al,%cl
movslq -0x74(%rbp),%rax
mov    %cl,-0x70(%rbp,%rax,1)
mov    -0x74(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    1196 <main+0x66>
movl   $0x0,-0x74(%rbp)
mov    -0x74(%rbp),%eax
cmp    -0x7c(%rbp),%eax
jge    1242 <main+0x112>
movslq -0x74(%rbp),%rax
lea    0xddc(%rip),%rdi
movsbl -0x70(%rbp,%rax,1),%esi
call   1040 <printf@plt>
mov    -0x74(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    1213 <main+0xe3>
xor    %eax,%eax
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %rbx
sub    $0x80,%rsp
lea    0xecd(%rip),%rdi
lea    0x10(%rsp),%rbx
mov    %rbx,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
lea    0xeba(%rip),%rdi
lea    0xc(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
mov    %rbx,%rdi
mov    $0x64,%esi
call   1030 <count_arr@plt>
mov    0xc(%rsp),%ecx
cmp    $0x1a,%ecx
jl     1196 <main+0x66>
mov    %ecx,%edx
imul   $0x4ec4ec4f,%rdx,%rdx
shr    $0x23,%rdx
lea    (%rdx,%rdx,4),%esi
lea    (%rsi,%rsi,4),%esi
add    %edx,%esi
sub    %esi,%ecx
mov    %ecx,0xc(%rsp)
test   %eax,%eax
jle    14b6 <main+0x386>
lea    0x48(%rcx),%edx
mov    %eax,%r14d
movzbl %dl,%edx
cmp    $0x8,%eax
jae    11b3 <main+0x83>
xor    %esi,%esi
jmp    1470 <main+0x340>
movd   %ecx,%xmm8
movzbl %cl,%r8d
cmp    $0x10,%eax
jae    1265 <main+0x135>
xor    %esi,%esi
mov    %rsi,%rdi
mov    %r14d,%esi
and    $0xfffffff8,%esi
pshufd $0x0,%xmm8,%xmm0
movd   %edx,%xmm1
punpcklbw %xmm1,%xmm1
pshuflw $0x0,%xmm1,%xmm1
movd   %r8d,%xmm2
punpcklbw %xmm2,%xmm2
pshuflw $0x0,%xmm2,%xmm2
movdqa 0xe07(%rip),%xmm3
nopl   0x0(%rax)
movq   0x10(%rsp,%rdi,1),%xmm4
punpcklbw %xmm4,%xmm5
punpckhwd %xmm5,%xmm6
psrad  $0x18,%xmm6
punpcklwd %xmm5,%xmm5
psrad  $0x18,%xmm5
paddd  %xmm0,%xmm5
paddd  %xmm0,%xmm6
pcmpgtd %xmm3,%xmm6
pcmpgtd %xmm3,%xmm5
packssdw %xmm6,%xmm5
packsswb %xmm5,%xmm5
movdqa %xmm1,%xmm6
pand   %xmm5,%xmm6
pandn  %xmm4,%xmm5
por    %xmm6,%xmm5
paddb  %xmm2,%xmm5
movq   %xmm5,0x10(%rsp,%rdi,1)
add    $0x8,%rdi
cmp    %rdi,%rsi
jne    1200 <main+0xd0>
cmp    %r14,%rsi
jne    1470 <main+0x340>
jmp    148f <main+0x35f>
mov    %r14d,%esi
and    $0xfffffff0,%esi
pshufd $0x0,%xmm8,%xmm3
movd   %edx,%xmm1
punpcklbw %xmm1,%xmm1
pshuflw $0x0,%xmm1,%xmm1
pshufd $0x0,%xmm1,%xmm10
movd   %r8d,%xmm2
punpcklbw %xmm2,%xmm2
pshuflw $0x0,%xmm2,%xmm2
pshufd $0x0,%xmm2,%xmm9
lea    -0x10(%rsi),%rdi
mov    %rdi,%r9
shr    $0x4,%r9
add    $0x1,%r9
test   %rdi,%rdi
je     14c5 <main+0x395>
mov    %r9,%rdi
and    $0xfffffffffffffffe,%rdi
xor    %ebx,%ebx
movdqa 0xd3f(%rip),%xmm4
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movdqa 0x10(%rsp,%rbx,1),%xmm6
movdqa 0x20(%rsp,%rbx,1),%xmm5
punpckhbw %xmm6,%xmm7
punpckhwd %xmm7,%xmm0
psrad  $0x18,%xmm0
punpcklwd %xmm7,%xmm2
psrad  $0x18,%xmm2
punpcklbw %xmm6,%xmm7
punpckhwd %xmm7,%xmm1
psrad  $0x18,%xmm1
punpcklwd %xmm7,%xmm7
psrad  $0x18,%xmm7
paddd  %xmm3,%xmm7
paddd  %xmm3,%xmm1
paddd  %xmm3,%xmm2
paddd  %xmm3,%xmm0
pcmpgtd %xmm4,%xmm0
pcmpgtd %xmm4,%xmm2
packssdw %xmm0,%xmm2
pcmpgtd %xmm4,%xmm1
pcmpgtd %xmm4,%xmm7
packssdw %xmm1,%xmm7
packsswb %xmm2,%xmm7
movdqa %xmm10,%xmm0
pand   %xmm7,%xmm0
pandn  %xmm6,%xmm7
por    %xmm0,%xmm7
paddb  %xmm9,%xmm7
movdqa %xmm7,0x10(%rsp,%rbx,1)
punpckhbw %xmm5,%xmm0
punpckhwd %xmm0,%xmm1
psrad  $0x18,%xmm1
punpcklwd %xmm0,%xmm0
psrad  $0x18,%xmm0
punpcklbw %xmm5,%xmm2
punpckhwd %xmm2,%xmm7
psrad  $0x18,%xmm7
punpcklwd %xmm2,%xmm6
psrad  $0x18,%xmm6
paddd  %xmm3,%xmm6
paddd  %xmm3,%xmm7
paddd  %xmm3,%xmm0
paddd  %xmm3,%xmm1
pcmpgtd %xmm4,%xmm1
pcmpgtd %xmm4,%xmm0
packssdw %xmm1,%xmm0
pcmpgtd %xmm4,%xmm7
pcmpgtd %xmm4,%xmm6
packssdw %xmm7,%xmm6
packsswb %xmm0,%xmm6
movdqa %xmm10,%xmm0
pand   %xmm6,%xmm0
pandn  %xmm5,%xmm6
por    %xmm0,%xmm6
paddb  %xmm9,%xmm6
movdqa %xmm6,0x20(%rsp,%rbx,1)
add    $0x20,%rbx
add    $0xfffffffffffffffe,%rdi
jne    12d0 <main+0x1a0>
test   $0x1,%r9b
je     1457 <main+0x327>
movdqa 0x10(%rsp,%rbx,1),%xmm4
punpckhbw %xmm4,%xmm0
punpckhwd %xmm0,%xmm1
psrad  $0x18,%xmm1
punpcklwd %xmm0,%xmm0
psrad  $0x18,%xmm0
punpcklbw %xmm4,%xmm2
punpckhwd %xmm2,%xmm6
psrad  $0x18,%xmm6
punpcklwd %xmm2,%xmm5
psrad  $0x18,%xmm5
paddd  %xmm3,%xmm5
paddd  %xmm3,%xmm6
paddd  %xmm3,%xmm0
paddd  %xmm3,%xmm1
movdqa 0xbde(%rip),%xmm2
pcmpgtd %xmm2,%xmm1
pcmpgtd %xmm2,%xmm0
packssdw %xmm1,%xmm0
pcmpgtd %xmm2,%xmm6
pcmpgtd %xmm2,%xmm5
packssdw %xmm6,%xmm5
packsswb %xmm0,%xmm5
pand   %xmm5,%xmm10
pandn  %xmm4,%xmm5
por    %xmm10,%xmm5
paddb  %xmm9,%xmm5
movdqa %xmm5,0x10(%rsp,%rbx,1)
cmp    %r14,%rsi
je     148f <main+0x35f>
test   $0x8,%r14b
jne    11c7 <main+0x97>
cs nopw 0x0(%rax,%rax,1)
movsbl 0x10(%rsp,%rsi,1),%edi
lea    (%rcx,%rdi,1),%ebx
cmp    $0x7a,%ebx
cmovge %edx,%edi
add    %cl,%dil
mov    %dil,0x10(%rsp,%rsi,1)
add    $0x1,%rsi
cmp    %rsi,%r14
jne    1470 <main+0x340>
test   %eax,%eax
jle    14b6 <main+0x386>
xor    %ebx,%ebx
lea    0xb7a(%rip),%r15
nopl   0x0(%rax)
movsbl 0x10(%rsp,%rbx,1),%esi
mov    %r15,%rdi
call   1040 <printf@plt>
add    $0x1,%rbx
cmp    %rbx,%r14
jne    14a0 <main+0x370>
xor    %eax,%eax
add    $0x80,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret
xor    %ebx,%ebx
test   $0x1,%r9b
jne    13d8 <main+0x2a8>
jmp    1457 <main+0x327>

LLVM IR (-O0):
@.str = [3 x i8] c"%s\00"
@.str.1 = [3 x i8] c"%d\00"
@.str.2 = [3 x i8] c"%c\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [100 x i8]
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
store i32 0, i32* %1
%6 = getelementptr inbounds [100 x i8], [100 x i8]* %2, i64 0, i64 0
%7 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %6)
%8 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %4)
%9 = getelementptr inbounds [100 x i8], [100 x i8]* %2, i64 0, i64 0
%10 = call i32 @count_arr(i8* %9, i32 100)
store i32 %10, i32* %5
%11 = load i32, i32* %4
%12 = icmp sge i32 %11, 26
br i1 %12, label %13, label %16
13: ; preds = %0
%14 = load i32, i32* %4
%15 = srem i32 %14, 26
store i32 %15, i32* %4
br label %16
16: ; preds = %13, %0
store i32 0, i32* %3
br label %17
17: ; preds = %64, %16
%18 = load i32, i32* %3
%19 = load i32, i32* %5
%20 = icmp slt i32 %18, %19
br i1 %20, label %21, label %67
21: ; preds = %17
%22 = load i32, i32* %3
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds [100 x i8], [100 x i8]* %2, i64 0, i64 %23
%25 = load i8, i8* %24
%26 = sext i8 %25 to i32
%27 = load i32, i32* %4
%28 = add nsw i32 %26, %27
%29 = icmp sge i32 %28, 122
br i1 %29, label %30, label %52
30: ; preds = %21
%31 = load i32, i32* %3
%32 = sext i32 %31 to i64
%33 = getelementptr inbounds [100 x i8], [100 x i8]* %2, i64 0, i64 %32
store i8 97, i8* %33
%34 = load i32, i32* %3
%35 = sext i32 %34 to i64
%36 = getelementptr inbounds [100 x i8], [100 x i8]* %2, i64 0, i64 %35
%37 = load i8, i8* %36
%38 = sext i8 %37 to i32
%39 = load i32, i32* %4
%40 = add nsw i32 %38, %39
%41 = load i32, i32* %3
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds [100 x i8], [100 x i8]* %2, i64 0, i64 %42
%44 = load i8, i8* %43
%45 = sext i8 %44 to i32
%46 = sub nsw i32 122, %45
%47 = sub nsw i32 %40, %46
%48 = trunc i32 %47 to i8
%49 = load i32, i32* %3
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds [100 x i8], [100 x i8]* %2, i64 0, i64 %50
store i8 %48, i8* %51
br label %52
52: ; preds = %30, %21
%53 = load i32, i32* %3
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds [100 x i8], [100 x i8]* %2, i64 0, i64 %54
%56 = load i8, i8* %55
%57 = sext i8 %56 to i32
%58 = load i32, i32* %4
%59 = add nsw i32 %57, %58
%60 = trunc i32 %59 to i8
%61 = load i32, i32* %3
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds [100 x i8], [100 x i8]* %2, i64 0, i64 %62
store i8 %60, i8* %63
br label %64
64: ; preds = %52
%65 = load i32, i32* %3
%66 = add nsw i32 %65, 1
store i32 %66, i32* %3
br label %17
67: ; preds = %17
store i32 0, i32* %3
br label %68
68: ; preds = %78, %67
%69 = load i32, i32* %3
%70 = load i32, i32* %5
%71 = icmp slt i32 %69, %70
br i1 %71, label %72, label %81
72: ; preds = %68
%73 = load i32, i32* %3
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds [100 x i8], [100 x i8]* %2, i64 0, i64 %74
%76 = load i8, i8* %75
%77 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8 signext %76)
br label %78
78: ; preds = %72
%79 = load i32, i32* %3
%80 = add nsw i32 %79, 1
store i32 %80, i32* %3
br label %68
81: ; preds = %68
ret i32 0
}

LLVM IR (-O2):
@.str = [3 x i8] c"%s\00"
@.str.1 = [3 x i8] c"%d\00"
@.str.2 = [3 x i8] c"%c\00"
define i32 @main() {
%1 = alloca [100 x i8]
%2 = alloca i32
%3 = getelementptr inbounds [100 x i8], [100 x i8]* %1, i64 0, i64 0
%4 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %3)
%5 = bitcast i32* %2 to i8*
%6 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %2)
%7 = call i32 @count_arr(i8* %3, i32 100)
%8 = load i32, i32* %2
%9 = icmp sgt i32 %8, 25
br i1 %9, label %10, label %12
10: ; preds = %0
%11 = urem i32 %8, 26
store i32 %11, i32* %2
br label %12
12: ; preds = %10, %0
%13 = phi i32 [ %11, %10 ], [ %8, %0 ]
%14 = icmp sgt i32 %7, 0
br i1 %14, label %15, label %127
15: ; preds = %12
%16 = trunc i32 %13 to i8
%17 = add i8 %16, 72
%18 = zext i32 %7 to i64
%19 = icmp ult i32 %7, 8
br i1 %19, label %104, label %20
20: ; preds = %15
%21 = icmp ult i32 %7, 16
br i1 %21, label %80, label %22
22: ; preds = %20
%23 = and i64 %18, 4294967280
%24 = insertelement <16 x i32> poison, i32 %13, i64 0
%25 = shufflevector <16 x i32> %24, <16 x i32> poison, <16 x i32> zeroinitializer
%26 = insertelement <16 x i8> poison, i8 %17, i64 0
%27 = shufflevector <16 x i8> %26, <16 x i8> poison, <16 x i32> zeroinitializer
%28 = insertelement <16 x i8> poison, i8 %16, i64 0
%29 = shufflevector <16 x i8> %28, <16 x i8> poison, <16 x i32> zeroinitializer
%30 = add nsw i64 %23, -16
%31 = lshr exact i64 %30, 4
%32 = add nuw nsw i64 %31, 1
%33 = and i64 %32, 1
%34 = icmp eq i64 %30, 0
br i1 %34, label %62, label %35
35: ; preds = %22
%36 = and i64 %32, 2305843009213693950
br label %37
37: ; preds = %37, %35
%38 = phi i64 [ 0, %35 ], [ %59, %37 ]
%39 = phi i64 [ 0, %35 ], [ %60, %37 ]
%40 = getelementptr inbounds [100 x i8], [100 x i8]* %1, i64 0, i64 %38
%41 = bitcast i8* %40 to <16 x i8>*
%42 = load <16 x i8>, <16 x i8>* %41
%43 = sext <16 x i8> %42 to <16 x i32>
%44 = add nsw <16 x i32> %25, %43
%45 = icmp sgt <16 x i32> %44, <i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121>
%46 = select <16 x i1> %45, <16 x i8> %27, <16 x i8> %42
%47 = add <16 x i8> %46, %29
%48 = bitcast i8* %40 to <16 x i8>*
store <16 x i8> %47, <16 x i8>* %48
%49 = or i64 %38, 16
%50 = getelementptr inbounds [100 x i8], [100 x i8]* %1, i64 0, i64 %49
%51 = bitcast i8* %50 to <16 x i8>*
%52 = load <16 x i8>, <16 x i8>* %51
%53 = sext <16 x i8> %52 to <16 x i32>
%54 = add nsw <16 x i32> %25, %53
%55 = icmp sgt <16 x i32> %54, <i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121>
%56 = select <16 x i1> %55, <16 x i8> %27, <16 x i8> %52
%57 = add <16 x i8> %56, %29
%58 = bitcast i8* %50 to <16 x i8>*
store <16 x i8> %57, <16 x i8>* %58
%59 = add nuw i64 %38, 32
%60 = add i64 %39, 2
%61 = icmp eq i64 %60, %36
br i1 %61, label %62, label %37
62: ; preds = %37, %22
%63 = phi i64 [ 0, %22 ], [ %59, %37 ]
%64 = icmp eq i64 %33, 0
br i1 %64, label %75, label %65
65: ; preds = %62
%66 = getelementptr inbounds [100 x i8], [100 x i8]* %1, i64 0, i64 %63
%67 = bitcast i8* %66 to <16 x i8>*
%68 = load <16 x i8>, <16 x i8>* %67
%69 = sext <16 x i8> %68 to <16 x i32>
%70 = add nsw <16 x i32> %25, %69
%71 = icmp sgt <16 x i32> %70, <i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121>
%72 = select <16 x i1> %71, <16 x i8> %27, <16 x i8> %68
%73 = add <16 x i8> %72, %29
%74 = bitcast i8* %66 to <16 x i8>*
store <16 x i8> %73, <16 x i8>* %74
br label %75
75: ; preds = %62, %65
%76 = icmp eq i64 %23, %18
br i1 %76, label %106, label %77
77: ; preds = %75
%78 = and i64 %18, 8
%79 = icmp eq i64 %78, 0
br i1 %79, label %104, label %80
80: ; preds = %20, %77
%81 = phi i64 [ %23, %77 ], [ 0, %20 ]
%82 = and i64 %18, 4294967288
%83 = insertelement <8 x i32> poison, i32 %13, i64 0
%84 = shufflevector <8 x i32> %83, <8 x i32> poison, <8 x i32> zeroinitializer
%85 = insertelement <8 x i8> poison, i8 %17, i64 0
%86 = shufflevector <8 x i8> %85, <8 x i8> poison, <8 x i32> zeroinitializer
%87 = insertelement <8 x i8> poison, i8 %16, i64 0
%88 = shufflevector <8 x i8> %87, <8 x i8> poison, <8 x i32> zeroinitializer
br label %89
89: ; preds = %89, %80
%90 = phi i64 [ %81, %80 ], [ %100, %89 ]
%91 = getelementptr inbounds [100 x i8], [100 x i8]* %1, i64 0, i64 %90
%92 = bitcast i8* %91 to <8 x i8>*
%93 = load <8 x i8>, <8 x i8>* %92
%94 = sext <8 x i8> %93 to <8 x i32>
%95 = add nsw <8 x i32> %84, %94
%96 = icmp sgt <8 x i32> %95, <i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121, i32 121>
%97 = select <8 x i1> %96, <8 x i8> %86, <8 x i8> %93
%98 = add <8 x i8> %97, %88
%99 = bitcast i8* %91 to <8 x i8>*
store <8 x i8> %98, <8 x i8>* %99
%100 = add nuw i64 %90, 8
%101 = icmp eq i64 %100, %82
br i1 %101, label %102, label %89
102: ; preds = %89
%103 = icmp eq i64 %82, %18
br i1 %103, label %106, label %104
104: ; preds = %15, %77, %102
%105 = phi i64 [ 0, %15 ], [ %23, %77 ], [ %82, %102 ]
br label %109
106: ; preds = %109, %102, %75
br i1 %14, label %107, label %127
107: ; preds = %106
%108 = zext i32 %7 to i64
br label %120
109: ; preds = %104, %109
%110 = phi i64 [ %118, %109 ], [ %105, %104 ]
%111 = getelementptr inbounds [100 x i8], [100 x i8]* %1, i64 0, i64 %110
%112 = load i8, i8* %111
%113 = sext i8 %112 to i32
%114 = add nsw i32 %13, %113
%115 = icmp sgt i32 %114, 121
%116 = select i1 %115, i8 %17, i8 %112
%117 = add i8 %116, %16
store i8 %117, i8* %111
%118 = add nuw nsw i64 %110, 1
%119 = icmp eq i64 %118, %18
br i1 %119, label %106, label %109
120: ; preds = %107, %120
%121 = phi i64 [ 0, %107 ], [ %125, %120 ]
%122 = getelementptr inbounds [100 x i8], [100 x i8]* %1, i64 0, i64 %121
%123 = load i8, i8* %122
%124 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i8 signext %123)
%125 = add nuw nsw i64 %121, 1
%126 = icmp eq i64 %125, %108
br i1 %126, label %127, label %120
127: ; preds = %120, %12, %106
ret i32 0
}