#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 */
typedef int /*<<< orphan*/ key;

/* Variables and functions */
int getchar();
int /*<<< orphan*/ printf(char *, char *);
int strlen(char *);
int main() {
  char input[1000];
  int ch, i;
  ch = i = 0;
  while ((ch = getchar()) != '\n')
    input[i++] = ch;
  input[i] = '\0';
  int len = strlen(input);
  int key_posi = 0, key[] = {16, 8, 6, 1, 3, 5, 6};
  size_t key_size = sizeof(key) / sizeof(int);
  char output[1000];
  int key_current = 0;
  for (key_posi = 6; key_posi >= 0; key_posi--) {
    key_current = key[key_posi];
    for (i = 0; i < len; i++) {
      input[i] = (((input[i] - 32) - (3 * key_current++)) % 94) + 32;
      if (input[i] < 32)
        input[i] = input[i] + 94;
    }
  }
  input[i] = '\0';
  printf("%s\n", input);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x820,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x3f8(%rbp)
movl   $0x0,-0x3f4(%rbp)
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %eax,-0x3f4(%rbp)
cmp    $0xa,%eax
je     1193 <main+0x63>
mov    -0x3f4(%rbp),%eax
mov    %al,%cl
mov    -0x3f8(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x3f8(%rbp)
cltq
mov    %cl,-0x3f0(%rbp,%rax,1)
jmp    1156 <main+0x26>
movslq -0x3f8(%rbp),%rax
movb   $0x0,-0x3f0(%rbp,%rax,1)
lea    -0x3f0(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x3fc(%rbp)
movl   $0x0,-0x400(%rbp)
mov    0xe3b(%rip),%rax
mov    %rax,-0x420(%rbp)
mov    0xe35(%rip),%rax
mov    %rax,-0x418(%rbp)
mov    0xe2f(%rip),%rax
mov    %rax,-0x410(%rbp)
mov    0xe2a(%rip),%eax
mov    %eax,-0x408(%rbp)
movq   $0x7,-0x428(%rbp)
movl   $0x0,-0x814(%rbp)
movl   $0x6,-0x400(%rbp)
cmpl   $0x0,-0x400(%rbp)
jl     12ff <main+0x1cf>
movslq -0x400(%rbp),%rax
mov    -0x420(%rbp,%rax,4),%eax
mov    %eax,-0x814(%rbp)
movl   $0x0,-0x3f8(%rbp)
mov    -0x3f8(%rbp),%eax
cmp    -0x3fc(%rbp),%eax
jge    12e6 <main+0x1b6>
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
sub    $0x20,%eax
mov    -0x814(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x814(%rbp)
imul   $0x3,%ecx,%ecx
sub    %ecx,%eax
mov    $0x5e,%ecx
cltd
idiv   %ecx
add    $0x20,%edx
mov    %dl,%cl
movslq -0x3f8(%rbp),%rax
mov    %cl,-0x3f0(%rbp,%rax,1)
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
cmp    $0x20,%eax
jge    12cd <main+0x19d>
movslq -0x3f8(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
add    $0x5e,%eax
mov    %al,%cl
movslq -0x3f8(%rbp),%rax
mov    %cl,-0x3f0(%rbp,%rax,1)
jmp    12d2 <main+0x1a2>
mov    -0x3f8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3f8(%rbp)
jmp    123e <main+0x10e>
jmp    12eb <main+0x1bb>
mov    -0x400(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x400(%rbp)
jmp    1213 <main+0xe3>
movslq -0x3f8(%rbp),%rax
movb   $0x0,-0x3f0(%rbp,%rax,1)
lea    -0x3f0(%rbp),%rsi
lea    0xd00(%rip),%rdi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x820,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
sub    $0x3e8,%rsp
xor    %ebx,%ebx
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    $0xa,%eax
je     1165 <main+0x35>
xor    %ebx,%ebx
nopw   0x0(%rax,%rax,1)
mov    %al,(%rsp,%rbx,1)
add    $0x1,%rbx
xor    %eax,%eax
call   1050 <getchar@plt>
cmp    $0xa,%eax
jne    1150 <main+0x20>
mov    %ebx,%ebx
movb   $0x0,(%rsp,%rbx,1)
mov    %rsp,%rdi
call   1030 <strlen@plt>
mov    %eax,%eax
mov    %eax,%r14d
and    $0xfffffff0,%r14d
mov    $0x6,%r10d
lea    0xf39(%rip),%r8
mov    $0x7e,%r11d
movdqa 0xeaa(%rip),%xmm12
movdqa 0xeb2(%rip),%xmm5
movdqa 0xeba(%rip),%xmm6
movdqa 0xec1(%rip),%xmm13
movdqa 0xed8(%rip),%xmm15
movdqa 0xedf(%rip),%xmm14
jmp    11dc <main+0xac>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %eax,%edx
sub    $0x1,%r10
jb     1567 <main+0x437>
mov    $0x0,%edx
test   %eax,%eax
jle    11d2 <main+0xa2>
mov    (%r8,%r10,4),%r9d
cmp    $0x10,%eax
jae    1200 <main+0xd0>
xor    %esi,%esi
jmp    150f <main+0x3df>
cs nopw 0x0(%rax,%rax,1)
nop
movd   %r9d,%xmm0
add    %r14d,%r9d
pshufd $0x0,%xmm0,%xmm2
movdqa %xmm2,%xmm1
paddd  0xde7(%rip),%xmm1
movdqa %xmm2,%xmm4
paddd  0xdeb(%rip),%xmm4
movdqa %xmm2,%xmm0
paddd  0xdef(%rip),%xmm0
paddd  0xdf7(%rip),%xmm2
xor    %esi,%esi
nopl   0x0(%rax,%rax,1)
movdqa (%rsp,%rsi,1),%xmm7
punpcklbw %xmm7,%xmm3
punpckhwd %xmm3,%xmm10
psrad  $0x18,%xmm10
punpcklwd %xmm3,%xmm8
psrad  $0x18,%xmm8
punpckhbw %xmm7,%xmm3
punpcklwd %xmm3,%xmm9
psrad  $0x18,%xmm9
punpckhwd %xmm3,%xmm11
psrad  $0x18,%xmm11
movdqa %xmm0,%xmm3
paddd  %xmm0,%xmm3
paddd  %xmm0,%xmm3
psubd  %xmm3,%xmm10
movdqa %xmm2,%xmm3
paddd  %xmm2,%xmm3
paddd  %xmm2,%xmm3
psubd  %xmm3,%xmm8
movdqa %xmm4,%xmm3
paddd  %xmm4,%xmm3
paddd  %xmm4,%xmm3
psubd  %xmm3,%xmm9
movdqa %xmm1,%xmm3
paddd  %xmm1,%xmm3
paddd  %xmm1,%xmm3
psubd  %xmm3,%xmm11
paddd  %xmm12,%xmm10
paddd  %xmm12,%xmm8
paddd  %xmm12,%xmm9
paddd  %xmm12,%xmm11
movdqa %xmm11,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
pshufd $0xf5,%xmm11,%xmm7
pmuludq %xmm5,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
pxor   %xmm7,%xmm7
pcmpgtd %xmm11,%xmm7
pand   %xmm5,%xmm7
paddd  %xmm11,%xmm7
psubd  %xmm7,%xmm3
paddd  %xmm11,%xmm3
movdqa %xmm3,%xmm7
psrld  $0x1f,%xmm7
psrld  $0x6,%xmm3
paddd  %xmm7,%xmm3
pshufd $0xf5,%xmm3,%xmm7
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
psubd  %xmm3,%xmm11
movdqa %xmm9,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
pshufd $0xf5,%xmm9,%xmm7
pmuludq %xmm5,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
pxor   %xmm7,%xmm7
pcmpgtd %xmm9,%xmm7
pand   %xmm5,%xmm7
paddd  %xmm9,%xmm7
psubd  %xmm7,%xmm3
paddd  %xmm9,%xmm3
movdqa %xmm3,%xmm7
psrld  $0x1f,%xmm7
psrld  $0x6,%xmm3
paddd  %xmm7,%xmm3
pshufd $0xf5,%xmm3,%xmm7
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
psubd  %xmm3,%xmm9
movdqa %xmm8,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
pshufd $0xf5,%xmm8,%xmm7
pmuludq %xmm5,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
pxor   %xmm7,%xmm7
pcmpgtd %xmm8,%xmm7
pand   %xmm5,%xmm7
paddd  %xmm8,%xmm7
psubd  %xmm7,%xmm3
paddd  %xmm8,%xmm3
movdqa %xmm3,%xmm7
psrld  $0x1f,%xmm7
psrld  $0x6,%xmm3
paddd  %xmm7,%xmm3
pshufd $0xf5,%xmm3,%xmm7
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
psubd  %xmm3,%xmm8
movdqa %xmm10,%xmm3
pmuludq %xmm5,%xmm3
pshufd $0xed,%xmm3,%xmm3
pshufd $0xf5,%xmm10,%xmm7
pmuludq %xmm5,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
pxor   %xmm7,%xmm7
pcmpgtd %xmm10,%xmm7
pand   %xmm5,%xmm7
paddd  %xmm10,%xmm7
psubd  %xmm7,%xmm3
paddd  %xmm10,%xmm3
movdqa %xmm3,%xmm7
psrld  $0x1f,%xmm7
psrld  $0x6,%xmm3
paddd  %xmm7,%xmm3
pshufd $0xf5,%xmm3,%xmm7
pmuludq %xmm6,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pmuludq %xmm6,%xmm7
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
psubd  %xmm3,%xmm10
pand   %xmm13,%xmm10
pand   %xmm13,%xmm8
packuswb %xmm10,%xmm8
pand   %xmm13,%xmm9
pand   %xmm13,%xmm11
packuswb %xmm11,%xmm9
packuswb %xmm9,%xmm8
movdqa 0xbcc(%rip),%xmm7
movdqa %xmm8,%xmm3
pmaxub %xmm7,%xmm3
pcmpeqb %xmm8,%xmm3
movdqa %xmm3,%xmm7
pandn  %xmm15,%xmm7
pand   %xmm14,%xmm3
por    %xmm7,%xmm3
paddb  %xmm8,%xmm3
movdqa %xmm3,(%rsp,%rsi,1)
movdqa 0xbca(%rip),%xmm3
add    $0x10,%rsi
paddd  %xmm3,%xmm2
paddd  %xmm3,%xmm0
paddd  %xmm3,%xmm4
paddd  %xmm3,%xmm1
cmp    %rsi,%r14
jne    1240 <main+0x110>
mov    %r14,%rsi
cmp    %rax,%r14
je     11d0 <main+0xa0>
lea    (%r9,%r9,2),%ebx
mov    $0xffffffe0,%edx
sub    %ebx,%edx
nopw   0x0(%rax,%rax,1)
movsbl (%rsp,%rsi,1),%ebx
add    %edx,%ebx
movslq %ebx,%rbx
imul   $0xffffffffae4c415d,%rbx,%rdi
shr    $0x20,%rdi
add    %ebx,%edi
mov    %edi,%ecx
shr    $0x1f,%ecx
shr    $0x6,%edi
add    %ecx,%edi
imul   $0x5e,%edi,%ecx
sub    %ecx,%ebx
cmp    $0x60,%bl
mov    $0x20,%ecx
cmovae %r11d,%ecx
add    %bl,%cl
mov    %cl,(%rsp,%rsi,1)
add    $0x1,%rsi
add    $0xfffffffd,%edx
cmp    %rsi,%rax
jne    1520 <main+0x3f0>
jmp    11d0 <main+0xa0>
mov    %edx,%eax
movb   $0x0,(%rsp,%rax,1)
lea    0xb68(%rip),%rdi
mov    %rsp,%rsi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x3e8,%rsp
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
@__const.main.key = [7 x i32] [i32 16, i32 8, i32 6, i32 1, i32 3, i32 5, i32 6]
@.str = [4 x i8] c"%s\0A\00"
define i32 @main() {
%1 = alloca [1000 x i8]
%2 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 0
%3 = tail call i32 (...) @getchar()
%4 = icmp eq i32 %3, 10
br i1 %4, label %15, label %5
5: ; preds = %0, %5
%6 = phi i64 [ %9, %5 ], [ 0, %0 ]
%7 = phi i32 [ %11, %5 ], [ %3, %0 ]
%8 = trunc i32 %7 to i8
%9 = add nuw i64 %6, 1
%10 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %6
store i8 %8, i8* %10
%11 = tail call i32 (...) @getchar()
%12 = icmp eq i32 %11, 10
br i1 %12, label %13, label %5
13: ; preds = %5
%14 = and i64 %9, 4294967295
br label %15
15: ; preds = %13, %0
%16 = phi i64 [ 0, %0 ], [ %14, %13 ]
%17 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %16
store i8 0, i8* %17
%18 = call i32 @strlen(i8* %2)
%19 = icmp sgt i32 %18, 0
%20 = zext i32 %18 to i64
%21 = icmp ult i32 %18, 16
%22 = and i64 %20, 4294967280
%23 = trunc i64 %22 to i32
%24 = icmp eq i64 %22, %20
br label %25
25: ; preds = %15, %75
%26 = phi i64 [ 6, %15 ], [ %77, %75 ]
br i1 %19, label %27, label %75
27: ; preds = %25
%28 = getelementptr inbounds [7 x i32], [7 x i32]* @__const.main.key, i64 0, i64 %26
%29 = load i32, i32* %28
br i1 %21, label %55, label %30
30: ; preds = %27
%31 = add i32 %29, %23
%32 = insertelement <16 x i32> poison, i32 %29, i64 0
%33 = shufflevector <16 x i32> %32, <16 x i32> poison, <16 x i32> zeroinitializer
%34 = add <16 x i32> %33, <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
br label %35
35: ; preds = %35, %30
%36 = phi i64 [ 0, %30 ], [ %51, %35 ]
%37 = phi <16 x i32> [ %34, %30 ], [ %52, %35 ]
%38 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %36
%39 = bitcast i8* %38 to <16 x i8>*
%40 = load <16 x i8>, <16 x i8>* %39
%41 = sext <16 x i8> %40 to <16 x i32>
%42 = mul <16 x i32> %37, <i32 -3, i32 -3, i32 -3, i32 -3, i32 -3, i32 -3, i32 -3, i32 -3, i32 -3, i32 -3, i32 -3, i32 -3, i32 -3, i32 -3, i32 -3, i32 -3>
%43 = add <16 x i32> %42, <i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32, i32 -32>
%44 = add <16 x i32> %43, %41
%45 = srem <16 x i32> %44, <i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94, i32 94>
%46 = trunc <16 x i32> %45 to <16 x i8>
%47 = icmp ugt <16 x i8> %46, <i8 95, i8 95, i8 95, i8 95, i8 95, i8 95, i8 95, i8 95, i8 95, i8 95, i8 95, i8 95, i8 95, i8 95, i8 95, i8 95>
%48 = select <16 x i1> %47, <16 x i8> <i8 126, i8 126, i8 126, i8 126, i8 126, i8 126, i8 126, i8 126, i8 126, i8 126, i8 126, i8 126, i8 126, i8 126, i8 126, i8 126>, <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>
%49 = add <16 x i8> %48, %46
%50 = bitcast i8* %38 to <16 x i8>*
store <16 x i8> %49, <16 x i8>* %50
%51 = add nuw i64 %36, 16
%52 = add <16 x i32> %37, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
%53 = icmp eq i64 %51, %22
br i1 %53, label %54, label %35
54: ; preds = %35
br i1 %24, label %75, label %55
55: ; preds = %27, %54
%56 = phi i64 [ 0, %27 ], [ %22, %54 ]
%57 = phi i32 [ %29, %27 ], [ %31, %54 ]
br label %58
58: ; preds = %55, %58
%59 = phi i64 [ %73, %58 ], [ %56, %55 ]
%60 = phi i32 [ %64, %58 ], [ %57, %55 ]
%61 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %59
%62 = load i8, i8* %61
%63 = sext i8 %62 to i32
%64 = add nsw i32 %60, 1
%65 = mul i32 %60, -3
%66 = add i32 %65, -32
%67 = add i32 %66, %63
%68 = srem i32 %67, 94
%69 = trunc i32 %68 to i8
%70 = icmp ugt i8 %69, 95
%71 = select i1 %70, i8 126, i8 32
%72 = add i8 %71, %69
store i8 %72, i8* %61
%73 = add nuw nsw i64 %59, 1
%74 = icmp eq i64 %73, %20
br i1 %74, label %75, label %58
75: ; preds = %58, %54, %25
%76 = phi i32 [ 0, %25 ], [ %18, %54 ], [ %18, %58 ]
%77 = add nsw i64 %26, -1
%78 = icmp eq i64 %26, 0
br i1 %78, label %79, label %25
79: ; preds = %75
%80 = zext i32 %76 to i64
%81 = getelementptr inbounds [1000 x i8], [1000 x i8]* %1, i64 0, i64 %80
store i8 0, i8* %81
%82 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* %2)
ret i32 0
}