#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 /*<<< orphan*/ printf(char *, char *);
int /*<<< orphan*/ scanf(char *, char *);
int strlen(char *);
int main() {
  char a[200] = {'\0'};
  int i, n, n1 = 0, n2 = 0;
  scanf("%s", a);
  n = strlen(a);
  for (i = 0; i < n; i++)
    if (a[i] >= 'a' && a[i] <= 'z')
      n1++;
    else
      n2++;
  if (n1 < n2) {
    for (i = 0; i < n; i++)
      if (a[i] >= 'a' && a[i] <= 'z')
        a[i] -= 32;
  } else {
    for (i = 0; i < n; i++)
      if (a[i] >= 'A' && a[i] <= 'Z')
        a[i] += 32;
  }
  printf("%s", a);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xe0,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0xd0(%rbp),%rdi
xor    %esi,%esi
mov    $0xc8,%edx
call   1050 <memset@plt>
movl   $0x0,-0xdc(%rbp)
movl   $0x0,-0xe0(%rbp)
lea    -0xd0(%rbp),%rsi
lea    0xe79(%rip),%rdi
call   1060 <scanf@plt>
lea    -0xd0(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0xd8(%rbp)
movl   $0x0,-0xd4(%rbp)
mov    -0xd4(%rbp),%eax
cmp    -0xd8(%rbp),%eax
jge    1226 <main+0xe6>
movslq -0xd4(%rbp),%rax
movsbl -0xd0(%rbp,%rax,1),%eax
ff
cmp    $0x61,%eax
jl     11fe <main+0xbe>
movslq -0xd4(%rbp),%rax
movsbl -0xd0(%rbp,%rax,1),%eax
ff
cmp    $0x7a,%eax
jg     11fe <main+0xbe>
mov    -0xdc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xdc(%rbp)
jmp    120d <main+0xcd>
mov    -0xe0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe0(%rbp)
jmp    1212 <main+0xd2>
mov    -0xd4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd4(%rbp)
jmp    11a8 <main+0x68>
mov    -0xdc(%rbp),%eax
cmp    -0xe0(%rbp),%eax
jge    12bb <main+0x17b>
movl   $0x0,-0xd4(%rbp)
mov    -0xd4(%rbp),%eax
cmp    -0xd8(%rbp),%eax
jge    12b6 <main+0x176>
movslq -0xd4(%rbp),%rax
movsbl -0xd0(%rbp,%rax,1),%eax
ff
cmp    $0x61,%eax
jl     129d <main+0x15d>
movslq -0xd4(%rbp),%rax
movsbl -0xd0(%rbp,%rax,1),%eax
ff
cmp    $0x7a,%eax
jg     129d <main+0x15d>
movslq -0xd4(%rbp),%rax
movsbl -0xd0(%rbp,%rax,1),%ecx
ff
sub    $0x20,%ecx
mov    %cl,-0xd0(%rbp,%rax,1)
jmp    12a2 <main+0x162>
mov    -0xd4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd4(%rbp)
jmp    1242 <main+0x102>
jmp    133e <main+0x1fe>
movl   $0x0,-0xd4(%rbp)
mov    -0xd4(%rbp),%eax
cmp    -0xd8(%rbp),%eax
jge    1339 <main+0x1f9>
movslq -0xd4(%rbp),%rax
movsbl -0xd0(%rbp,%rax,1),%eax
ff
cmp    $0x41,%eax
jl     1320 <main+0x1e0>
movslq -0xd4(%rbp),%rax
movsbl -0xd0(%rbp,%rax,1),%eax
ff
cmp    $0x5a,%eax
jg     1320 <main+0x1e0>
movslq -0xd4(%rbp),%rax
movsbl -0xd0(%rbp,%rax,1),%ecx
ff
add    $0x20,%ecx
mov    %cl,-0xd0(%rbp,%rax,1)
jmp    1325 <main+0x1e5>
mov    -0xd4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd4(%rbp)
jmp    12c5 <main+0x185>
jmp    133e <main+0x1fe>
lea    -0xd0(%rbp),%rsi
lea    0xcb4(%rip),%rdi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0xe0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0xd0,%rsp
pxor   %xmm0,%xmm0
movdqa %xmm0,0xb0(%rsp)
movdqa %xmm0,0xa0(%rsp)
movdqa %xmm0,0x90(%rsp)
movdqa %xmm0,0x80(%rsp)
movdqa %xmm0,0x70(%rsp)
movdqa %xmm0,0x60(%rsp)
movdqa %xmm0,0x50(%rsp)
movdqa %xmm0,0x40(%rsp)
movdqa %xmm0,0x30(%rsp)
movdqa %xmm0,0x20(%rsp)
movdqa %xmm0,0x10(%rsp)
movdqa %xmm0,(%rsp)
movq   $0x0,0xc0(%rsp)
lea    0xebe(%rip),%rdi
mov    %rsp,%rbx
mov    %rbx,%rsi
call   1050 <scanf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
test   %eax,%eax
jle    1623 <main+0x4f3>
mov    %eax,%ecx
cmp    $0x8,%eax
jae    11cf <main+0x9f>
xor    %edx,%edx
xor    %edi,%edi
xor    %esi,%esi
jmp    12e0 <main+0x1b0>
mov    %ecx,%edx
and    $0xfffffff8,%edx
pxor   %xmm0,%xmm0
xor    %esi,%esi
movdqa 0xe1d(%rip),%xmm8
movdqa 0xe24(%rip),%xmm9
pcmpeqd %xmm10,%xmm10
movdqa 0xe27(%rip),%xmm6
pxor   %xmm1,%xmm1
pxor   %xmm7,%xmm7
pxor   %xmm5,%xmm5
cs nopw 0x0(%rax,%rax,1)
nop
movq   (%rsp,%rsi,1),%xmm3
movd   0x4(%rsp,%rsi,1),%xmm4
paddb  %xmm8,%xmm3
paddb  %xmm8,%xmm4
movdqa %xmm3,%xmm2
pmaxub %xmm9,%xmm2
pcmpeqb %xmm3,%xmm2
movdqa %xmm2,%xmm3
pxor   %xmm10,%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
pand   %xmm6,%xmm3
paddd  %xmm3,%xmm7
movdqa %xmm4,%xmm3
pmaxub %xmm9,%xmm3
pcmpeqb %xmm4,%xmm3
movdqa %xmm3,%xmm4
pxor   %xmm10,%xmm4
punpcklbw %xmm4,%xmm4
punpcklwd %xmm4,%xmm4
pand   %xmm6,%xmm4
paddd  %xmm4,%xmm5
punpcklbw %xmm2,%xmm2
punpcklwd %xmm2,%xmm2
pand   %xmm6,%xmm2
paddd  %xmm2,%xmm0
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
pand   %xmm6,%xmm3
paddd  %xmm3,%xmm1
add    $0x8,%rsi
cmp    %rsi,%rdx
jne    1210 <main+0xe0>
paddd  %xmm7,%xmm5
pshufd $0xee,%xmm5,%xmm2
paddd  %xmm5,%xmm2
pshufd $0x55,%xmm2,%xmm3
paddd  %xmm2,%xmm3
movd   %xmm3,%esi
paddd  %xmm0,%xmm1
pshufd $0xee,%xmm1,%xmm0
paddd  %xmm1,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%edi
cmp    %rcx,%rdx
je     12fc <main+0x1cc>
nopw   0x0(%rax,%rax,1)
movzbl (%rsp,%rdx,1),%ebx
add    $0x9f,%bl
cmp    $0x1a,%bl
adc    $0x0,%esi
cmp    $0x1a,%bl
sbb    $0xffffffff,%edi
add    $0x1,%rdx
cmp    %rdx,%rcx
jne    12e0 <main+0x1b0>
cmp    %edi,%esi
jae    1314 <main+0x1e4>
test   %eax,%eax
jle    1623 <main+0x4f3>
cmp    $0x8,%eax
jae    132c <main+0x1fc>
xor    %eax,%eax
jmp    1609 <main+0x4d9>
test   %eax,%eax
jle    1623 <main+0x4f3>
cmp    $0x8,%eax
jae    148f <main+0x35f>
xor    %eax,%eax
jmp    1649 <main+0x519>
mov    %ecx,%eax
and    $0xfffffff8,%eax
xor    %edx,%edx
movdqa 0xd15(%rip),%xmm0
movdqa 0xcfd(%rip),%xmm1
pcmpeqd %xmm2,%xmm2
jmp    135d <main+0x22d>
nopl   0x0(%rax)
add    $0x8,%rdx
cmp    %rdx,%rax
je     15ef <main+0x4bf>
movq   (%rsp,%rdx,1),%xmm3
movdqa %xmm3,%xmm4
paddb  %xmm0,%xmm4
movdqa %xmm4,%xmm5
pmaxub %xmm1,%xmm5
pcmpeqb %xmm4,%xmm5
movd   %xmm5,%esi
not    %sil
test   $0x1,%sil
je     138f <main+0x25f>
movd   %xmm3,%esi
add    $0xe0,%sil
mov    %sil,(%rsp,%rdx,1)
movdqa %xmm5,%xmm4
pxor   %xmm2,%xmm4
movdqa %xmm4,%xmm6
pslld  $0x8,%xmm6
movd   %xmm6,%esi
shr    $0x10,%esi
test   $0x1,%sil
je     13bd <main+0x28d>
movd   %xmm3,%esi
shr    $0x8,%esi
add    $0xe0,%sil
mov    %sil,0x1(%rsp,%rdx,1)
pshuflw $0x55,%xmm5,%xmm6
pxor   %xmm2,%xmm6
pextrw $0x2,%xmm6,%esi
test   $0x1,%sil
je     13e1 <main+0x2b1>
movd   %xmm3,%esi
shr    $0x10,%esi
add    $0xe0,%sil
mov    %sil,0x2(%rsp,%rdx,1)
movdqa %xmm4,%xmm6
psllq  $0x18,%xmm6
pextrw $0x3,%xmm6,%esi
test   $0x1,%sil
je     1405 <main+0x2d5>
movd   %xmm3,%esi
shr    $0x18,%esi
add    $0xe0,%sil
mov    %sil,0x3(%rsp,%rdx,1)
pshufd $0x55,%xmm5,%xmm5
pxor   %xmm2,%xmm5
pextrw $0x4,%xmm5,%esi
test   $0x1,%sil
je     1427 <main+0x2f7>
pextrw $0x2,%xmm3,%esi
add    $0xe0,%sil
mov    %sil,0x4(%rsp,%rdx,1)
movdqa %xmm4,%xmm5
pslldq $0x5,%xmm5
pextrw $0x5,%xmm5,%esi
test   $0x1,%sil
je     144c <main+0x31c>
pextrw $0x2,%xmm3,%esi
shr    $0x8,%esi
add    $0xe0,%sil
mov    %sil,0x5(%rsp,%rdx,1)
pextrw $0x3,%xmm4,%esi
test   $0x1,%sil
je     1465 <main+0x335>
pextrw $0x3,%xmm3,%esi
add    $0xe0,%sil
mov    %sil,0x6(%rsp,%rdx,1)
pslldq $0x7,%xmm4
pextrw $0x7,%xmm4,%esi
test   $0x1,%sil
je     1350 <main+0x220>
pextrw $0x3,%xmm3,%esi
shr    $0x8,%esi
add    $0xe0,%sil
mov    %sil,0x7(%rsp,%rdx,1)
jmp    1350 <main+0x220>
mov    %ecx,%eax
and    $0xfffffff8,%eax
xor    %edx,%edx
movdqa 0xb92(%rip),%xmm0
movdqa 0xb9a(%rip),%xmm1
pcmpeqd %xmm2,%xmm2
jmp    14bd <main+0x38d>
nopl   0x0(%rax)
add    $0x8,%rdx
cmp    %rdx,%rax
je     161e <main+0x4ee>
movq   (%rsp,%rdx,1),%xmm3
movdqa %xmm3,%xmm4
paddb  %xmm0,%xmm4
movdqa %xmm4,%xmm5
pmaxub %xmm1,%xmm5
pcmpeqb %xmm4,%xmm5
movd   %xmm5,%esi
not    %sil
test   $0x1,%sil
je     14ef <main+0x3bf>
movd   %xmm3,%esi
add    $0x20,%sil
mov    %sil,(%rsp,%rdx,1)
movdqa %xmm5,%xmm4
pxor   %xmm2,%xmm4
movdqa %xmm4,%xmm6
pslld  $0x8,%xmm6
movd   %xmm6,%esi
shr    $0x10,%esi
test   $0x1,%sil
je     151d <main+0x3ed>
movd   %xmm3,%esi
shr    $0x8,%esi
add    $0x20,%sil
mov    %sil,0x1(%rsp,%rdx,1)
pshuflw $0x55,%xmm5,%xmm6
pxor   %xmm2,%xmm6
pextrw $0x2,%xmm6,%esi
test   $0x1,%sil
je     1541 <main+0x411>
movd   %xmm3,%esi
shr    $0x10,%esi
add    $0x20,%sil
mov    %sil,0x2(%rsp,%rdx,1)
movdqa %xmm4,%xmm6
psllq  $0x18,%xmm6
pextrw $0x3,%xmm6,%esi
test   $0x1,%sil
je     1565 <main+0x435>
movd   %xmm3,%esi
shr    $0x18,%esi
add    $0x20,%sil
mov    %sil,0x3(%rsp,%rdx,1)
pshufd $0x55,%xmm5,%xmm5
pxor   %xmm2,%xmm5
pextrw $0x4,%xmm5,%esi
test   $0x1,%sil
je     1587 <main+0x457>
pextrw $0x2,%xmm3,%esi
add    $0x20,%sil
mov    %sil,0x4(%rsp,%rdx,1)
movdqa %xmm4,%xmm5
pslldq $0x5,%xmm5
pextrw $0x5,%xmm5,%esi
test   $0x1,%sil
je     15ac <main+0x47c>
pextrw $0x2,%xmm3,%esi
shr    $0x8,%esi
add    $0x20,%sil
mov    %sil,0x5(%rsp,%rdx,1)
pextrw $0x3,%xmm4,%esi
test   $0x1,%sil
je     15c5 <main+0x495>
pextrw $0x3,%xmm3,%esi
add    $0x20,%sil
mov    %sil,0x6(%rsp,%rdx,1)
pslldq $0x7,%xmm4
pextrw $0x7,%xmm4,%esi
test   $0x1,%sil
je     14b0 <main+0x380>
pextrw $0x3,%xmm3,%esi
shr    $0x8,%esi
add    $0x20,%sil
mov    %sil,0x7(%rsp,%rdx,1)
jmp    14b0 <main+0x380>
cmp    %rcx,%rax
jne    1609 <main+0x4d9>
jmp    1623 <main+0x4f3>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%rax
cmp    %rax,%rcx
je     1623 <main+0x4f3>
movzbl (%rsp,%rax,1),%edx
lea    -0x61(%rdx),%esi
cmp    $0x19,%sil
ja     1600 <main+0x4d0>
add    $0xe0,%dl
mov    %dl,(%rsp,%rax,1)
jmp    1600 <main+0x4d0>
cmp    %rcx,%rax
jne    1649 <main+0x519>
lea    0xa36(%rip),%rdi
mov    %rsp,%rsi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0xd0,%rsp
pop    %rbx
ret
nopl   (%rax)
add    $0x1,%rax
cmp    %rax,%rcx
je     1623 <main+0x4f3>
movzbl (%rsp,%rax,1),%edx
lea    -0x41(%rdx),%esi
cmp    $0x19,%sil
ja     1640 <main+0x510>
add    $0x20,%dl
mov    %dl,(%rsp,%rax,1)
jmp    1640 <main+0x510>

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

LLVM IR (-O2):
@.str = [3 x i8] c"%s\00"
define i32 @main() {
%1 = alloca [200 x i8]
%2 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 0
%3 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %2)
%4 = call i32 @strlen(i8* %2)
%5 = icmp sgt i32 %4, 0
br i1 %5, label %6, label %238
6: ; preds = %0
%7 = zext i32 %4 to i64
%8 = icmp ult i32 %4, 8
br i1 %8, label %45, label %9
9: ; preds = %6
%10 = and i64 %7, 4294967288
br label %11
11: ; preds = %11, %9
%12 = phi i64 [ 0, %9 ], [ %37, %11 ]
%13 = phi <4 x i32> [ zeroinitializer, %9 ], [ %35, %11 ]
%14 = phi <4 x i32> [ zeroinitializer, %9 ], [ %36, %11 ]
%15 = phi <4 x i32> [ zeroinitializer, %9 ], [ %29, %11 ]
%16 = phi <4 x i32> [ zeroinitializer, %9 ], [ %30, %11 ]
%17 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %12
%18 = bitcast i8* %17 to <4 x i8>*
%19 = load <4 x i8>, <4 x i8>* %18
%20 = getelementptr inbounds i8, i8* %17, i64 4
%21 = bitcast i8* %20 to <4 x i8>*
%22 = load <4 x i8>, <4 x i8>* %21
%23 = add <4 x i8> %19, <i8 -97, i8 -97, i8 -97, i8 -97>
%24 = add <4 x i8> %22, <i8 -97, i8 -97, i8 -97, i8 -97>
%25 = icmp ult <4 x i8> %23, <i8 26, i8 26, i8 26, i8 26>
%26 = icmp ult <4 x i8> %24, <i8 26, i8 26, i8 26, i8 26>
%27 = zext <4 x i1> %25 to <4 x i32>
%28 = zext <4 x i1> %26 to <4 x i32>
%29 = add <4 x i32> %15, %27
%30 = add <4 x i32> %16, %28
%31 = xor <4 x i1> %25, <i1 true, i1 true, i1 true, i1 true>
%32 = xor <4 x i1> %26, <i1 true, i1 true, i1 true, i1 true>
%33 = zext <4 x i1> %31 to <4 x i32>
%34 = zext <4 x i1> %32 to <4 x i32>
%35 = add <4 x i32> %13, %33
%36 = add <4 x i32> %14, %34
%37 = add nuw i64 %12, 8
%38 = icmp eq i64 %37, %10
br i1 %38, label %39, label %11
39: ; preds = %11
%40 = add <4 x i32> %30, %29
%41 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %40)
%42 = add <4 x i32> %36, %35
%43 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %42)
%44 = icmp eq i64 %10, %7
br i1 %44, label %64, label %45
45: ; preds = %6, %39
%46 = phi i64 [ 0, %6 ], [ %10, %39 ]
%47 = phi i32 [ 0, %6 ], [ %43, %39 ]
%48 = phi i32 [ 0, %6 ], [ %41, %39 ]
br label %49
49: ; preds = %45, %49
%50 = phi i64 [ %62, %49 ], [ %46, %45 ]
%51 = phi i32 [ %61, %49 ], [ %47, %45 ]
%52 = phi i32 [ %58, %49 ], [ %48, %45 ]
%53 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %50
%54 = load i8, i8* %53
%55 = add i8 %54, -97
%56 = icmp ult i8 %55, 26
%57 = zext i1 %56 to i32
%58 = add nuw nsw i32 %52, %57
%59 = xor i1 %56, true
%60 = zext i1 %59 to i32
%61 = add nuw nsw i32 %51, %60
%62 = add nuw nsw i64 %50, 1
%63 = icmp eq i64 %62, %7
br i1 %63, label %64, label %49
64: ; preds = %49, %39
%65 = phi i32 [ %41, %39 ], [ %58, %49 ]
%66 = phi i32 [ %43, %39 ], [ %61, %49 ]
%67 = icmp ult i32 %65, %66
br i1 %67, label %142, label %68
68: ; preds = %64
br i1 %5, label %69, label %238
69: ; preds = %68
%70 = zext i32 %4 to i64
%71 = icmp ult i32 %4, 8
br i1 %71, label %140, label %72
72: ; preds = %69
%73 = and i64 %7, 4294967288
br label %74
74: ; preds = %135, %72
%75 = phi i64 [ 0, %72 ], [ %136, %135 ]
%76 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %75
%77 = bitcast i8* %76 to <8 x i8>*
%78 = load <8 x i8>, <8 x i8>* %77
%79 = add <8 x i8> %78, <i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65, i8 -65>
%80 = icmp ult <8 x i8> %79, <i8 26, i8 26, i8 26, i8 26, i8 26, i8 26, i8 26, i8 26>
%81 = extractelement <8 x i1> %80, i64 0
br i1 %81, label %82, label %86
82: ; preds = %74
%83 = extractelement <8 x i8> %78, i64 0
%84 = add nuw nsw i8 %83, 32
%85 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %75
store i8 %84, i8* %85
br label %86
86: ; preds = %82, %74
%87 = extractelement <8 x i1> %80, i64 1
br i1 %87, label %88, label %93
88: ; preds = %86
%89 = or i64 %75, 1
%90 = extractelement <8 x i8> %78, i64 1
%91 = add nuw nsw i8 %90, 32
%92 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %89
store i8 %91, i8* %92
br label %93
93: ; preds = %88, %86
%94 = extractelement <8 x i1> %80, i64 2
br i1 %94, label %95, label %100
95: ; preds = %93
%96 = or i64 %75, 2
%97 = extractelement <8 x i8> %78, i64 2
%98 = add nuw nsw i8 %97, 32
%99 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %96
store i8 %98, i8* %99
br label %100
100: ; preds = %95, %93
%101 = extractelement <8 x i1> %80, i64 3
br i1 %101, label %102, label %107
102: ; preds = %100
%103 = or i64 %75, 3
%104 = extractelement <8 x i8> %78, i64 3
%105 = add nuw nsw i8 %104, 32
%106 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %103
store i8 %105, i8* %106
br label %107
107: ; preds = %102, %100
%108 = extractelement <8 x i1> %80, i64 4
br i1 %108, label %109, label %114
109: ; preds = %107
%110 = or i64 %75, 4
%111 = extractelement <8 x i8> %78, i64 4
%112 = add nuw nsw i8 %111, 32
%113 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %110
store i8 %112, i8* %113
br label %114
114: ; preds = %109, %107
%115 = extractelement <8 x i1> %80, i64 5
br i1 %115, label %116, label %121
116: ; preds = %114
%117 = or i64 %75, 5
%118 = extractelement <8 x i8> %78, i64 5
%119 = add nuw nsw i8 %118, 32
%120 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %117
store i8 %119, i8* %120
br label %121
121: ; preds = %116, %114
%122 = extractelement <8 x i1> %80, i64 6
br i1 %122, label %123, label %128
123: ; preds = %121
%124 = or i64 %75, 6
%125 = extractelement <8 x i8> %78, i64 6
%126 = add nuw nsw i8 %125, 32
%127 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %124
store i8 %126, i8* %127
br label %128
128: ; preds = %123, %121
%129 = extractelement <8 x i1> %80, i64 7
br i1 %129, label %130, label %135
130: ; preds = %128
%131 = or i64 %75, 7
%132 = extractelement <8 x i8> %78, i64 7
%133 = add nuw nsw i8 %132, 32
%134 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %131
store i8 %133, i8* %134
br label %135
135: ; preds = %130, %128
%136 = add nuw i64 %75, 8
%137 = icmp eq i64 %136, %73
br i1 %137, label %138, label %74
138: ; preds = %135
%139 = icmp eq i64 %73, %7
br i1 %139, label %238, label %140
140: ; preds = %69, %138
%141 = phi i64 [ 0, %69 ], [ %73, %138 ]
br label %227
142: ; preds = %64
br i1 %5, label %143, label %238
143: ; preds = %142
%144 = zext i32 %4 to i64
%145 = icmp ult i32 %4, 8
br i1 %145, label %214, label %146
146: ; preds = %143
%147 = and i64 %7, 4294967288
br label %148
148: ; preds = %209, %146
%149 = phi i64 [ 0, %146 ], [ %210, %209 ]
%150 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %149
%151 = bitcast i8* %150 to <8 x i8>*
%152 = load <8 x i8>, <8 x i8>* %151
%153 = add <8 x i8> %152, <i8 -97, i8 -97, i8 -97, i8 -97, i8 -97, i8 -97, i8 -97, i8 -97>
%154 = icmp ult <8 x i8> %153, <i8 26, i8 26, i8 26, i8 26, i8 26, i8 26, i8 26, i8 26>
%155 = extractelement <8 x i1> %154, i64 0
br i1 %155, label %156, label %160
156: ; preds = %148
%157 = extractelement <8 x i8> %152, i64 0
%158 = add nsw i8 %157, -32
%159 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %149
store i8 %158, i8* %159
br label %160
160: ; preds = %156, %148
%161 = extractelement <8 x i1> %154, i64 1
br i1 %161, label %162, label %167
162: ; preds = %160
%163 = or i64 %149, 1
%164 = extractelement <8 x i8> %152, i64 1
%165 = add nsw i8 %164, -32
%166 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %163
store i8 %165, i8* %166
br label %167
167: ; preds = %162, %160
%168 = extractelement <8 x i1> %154, i64 2
br i1 %168, label %169, label %174
169: ; preds = %167
%170 = or i64 %149, 2
%171 = extractelement <8 x i8> %152, i64 2
%172 = add nsw i8 %171, -32
%173 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %170
store i8 %172, i8* %173
br label %174
174: ; preds = %169, %167
%175 = extractelement <8 x i1> %154, i64 3
br i1 %175, label %176, label %181
176: ; preds = %174
%177 = or i64 %149, 3
%178 = extractelement <8 x i8> %152, i64 3
%179 = add nsw i8 %178, -32
%180 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %177
store i8 %179, i8* %180
br label %181
181: ; preds = %176, %174
%182 = extractelement <8 x i1> %154, i64 4
br i1 %182, label %183, label %188
183: ; preds = %181
%184 = or i64 %149, 4
%185 = extractelement <8 x i8> %152, i64 4
%186 = add nsw i8 %185, -32
%187 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %184
store i8 %186, i8* %187
br label %188
188: ; preds = %183, %181
%189 = extractelement <8 x i1> %154, i64 5
br i1 %189, label %190, label %195
190: ; preds = %188
%191 = or i64 %149, 5
%192 = extractelement <8 x i8> %152, i64 5
%193 = add nsw i8 %192, -32
%194 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %191
store i8 %193, i8* %194
br label %195
195: ; preds = %190, %188
%196 = extractelement <8 x i1> %154, i64 6
br i1 %196, label %197, label %202
197: ; preds = %195
%198 = or i64 %149, 6
%199 = extractelement <8 x i8> %152, i64 6
%200 = add nsw i8 %199, -32
%201 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %198
store i8 %200, i8* %201
br label %202
202: ; preds = %197, %195
%203 = extractelement <8 x i1> %154, i64 7
br i1 %203, label %204, label %209
204: ; preds = %202
%205 = or i64 %149, 7
%206 = extractelement <8 x i8> %152, i64 7
%207 = add nsw i8 %206, -32
%208 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %205
store i8 %207, i8* %208
br label %209
209: ; preds = %204, %202
%210 = add nuw i64 %149, 8
%211 = icmp eq i64 %210, %147
br i1 %211, label %212, label %148
212: ; preds = %209
%213 = icmp eq i64 %147, %7
br i1 %213, label %238, label %214
214: ; preds = %143, %212
%215 = phi i64 [ 0, %143 ], [ %147, %212 ]
br label %216
216: ; preds = %214, %224
%217 = phi i64 [ %225, %224 ], [ %215, %214 ]
%218 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %217
%219 = load i8, i8* %218
%220 = add i8 %219, -97
%221 = icmp ult i8 %220, 26
br i1 %221, label %222, label %224
222: ; preds = %216
%223 = add nsw i8 %219, -32
store i8 %223, i8* %218
br label %224
224: ; preds = %216, %222
%225 = add nuw nsw i64 %217, 1
%226 = icmp eq i64 %225, %144
br i1 %226, label %238, label %216
227: ; preds = %140, %235
%228 = phi i64 [ %236, %235 ], [ %141, %140 ]
%229 = getelementptr inbounds [200 x i8], [200 x i8]* %1, i64 0, i64 %228
%230 = load i8, i8* %229
%231 = add i8 %230, -65
%232 = icmp ult i8 %231, 26
br i1 %232, label %233, label %235
233: ; preds = %227
%234 = add nuw nsw i8 %230, 32
store i8 %234, i8* %229
br label %235
235: ; preds = %227, %233
%236 = add nuw nsw i64 %228, 1
%237 = icmp eq i64 %236, %70
br i1 %237, label %238, label %227
238: ; preds = %235, %224, %138, %212, %0, %68, %142
%239 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %2)
ret i32 0
}