#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*/ fgets(char *, int, int /*<<< orphan*/);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ stdin;
int main(void) {
  char str[21];
  int i;
  int count;
  count = 0;
  printf("Please enter a string > ");
  fgets(str, 21 - 2, stdin);
  for (i = 0; i < 21; i++) {
    if (str[i] == 'a')
      count++;
    if (str[i] == 'e')
      count++;
    if (str[i] == 'i')
      count++;
    if (str[i] == 'o')
      count++;
    if (str[i] == 'u')
      count++;
    if (str[i] == 'y')
      count++;
  }
  printf("The number of syllables is %d.\n", count);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x28(%rbp)
lea    0xec3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    -0x20(%rbp),%rdi
mov    0x2e99(%rip),%rax
mov    (%rax),%edx
mov    $0x13,%esi
call   1040 <fgets@plt>
movl   $0x0,-0x24(%rbp)
cmpl   $0x15,-0x24(%rbp)
jge    1221 <main+0x101>
movslq -0x24(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x61,%eax
jne    1187 <main+0x67>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
movslq -0x24(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x65,%eax
jne    11a2 <main+0x82>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
movslq -0x24(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x69,%eax
jne    11bd <main+0x9d>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
movslq -0x24(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x6f,%eax
jne    11d8 <main+0xb8>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
movslq -0x24(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x75,%eax
jne    11f3 <main+0xd3>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
movslq -0x24(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x79,%eax
jne    120e <main+0xee>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1213 <main+0xf3>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1162 <main+0x42>
mov    -0x28(%rbp),%esi
lea    0xdee(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0x18,%rsp
lea    0xf55(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    0x2eaf(%rip),%rax
mov    (%rax),%edx
mov    %rsp,%rdi
mov    $0x13,%esi
call   1040 <fgets@plt>
movd   0x4(%rsp),%xmm5
movq   0x8(%rsp),%xmm1
movd   0xc(%rsp),%xmm7
movdqa (%rsp),%xmm2
movdqa 0x10(%rsp),%xmm10
movdqa 0xe91(%rip),%xmm11
movdqa %xmm2,%xmm0
pcmpeqb %xmm11,%xmm0
punpcklbw %xmm0,%xmm0
punpcklwd %xmm0,%xmm0
movdqa 0xe87(%rip),%xmm9
pand   %xmm9,%xmm0
movdqa 0xe89(%rip),%xmm12
movdqa %xmm2,%xmm3
pcmpeqb %xmm12,%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
pand   %xmm9,%xmm3
paddd  %xmm0,%xmm3
movdqa 0xe76(%rip),%xmm14
movdqa %xmm2,%xmm6
pcmpeqb %xmm14,%xmm6
punpcklbw %xmm6,%xmm6
punpcklwd %xmm6,%xmm6
pand   %xmm9,%xmm6
movdqa 0xe67(%rip),%xmm13
movdqa %xmm2,%xmm0
pcmpeqb %xmm13,%xmm0
punpcklbw %xmm0,%xmm0
punpcklwd %xmm0,%xmm0
pand   %xmm9,%xmm0
paddd  %xmm6,%xmm0
paddd  %xmm3,%xmm0
movdqa 0xe51(%rip),%xmm6
movdqa %xmm2,%xmm3
pcmpeqb %xmm6,%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
pand   %xmm9,%xmm3
movdqa 0xe43(%rip),%xmm8
pcmpeqb %xmm8,%xmm2
punpcklbw %xmm2,%xmm2
punpcklwd %xmm2,%xmm2
pand   %xmm9,%xmm2
paddd  %xmm3,%xmm2
movdqa %xmm5,%xmm3
pcmpeqb %xmm11,%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
pand   %xmm9,%xmm3
paddd  %xmm2,%xmm3
paddd  %xmm0,%xmm3
movdqa %xmm5,%xmm0
pcmpeqb %xmm12,%xmm0
punpcklbw %xmm0,%xmm0
punpcklwd %xmm0,%xmm0
pand   %xmm9,%xmm0
movdqa %xmm5,%xmm2
pcmpeqb %xmm14,%xmm2
punpcklbw %xmm2,%xmm2
punpcklwd %xmm2,%xmm2
pand   %xmm9,%xmm2
paddd  %xmm0,%xmm2
movdqa %xmm5,%xmm4
pcmpeqb %xmm13,%xmm4
punpcklbw %xmm4,%xmm4
punpcklwd %xmm4,%xmm4
pand   %xmm9,%xmm4
paddd  %xmm2,%xmm4
movdqa %xmm5,%xmm0
pcmpeqb %xmm6,%xmm0
punpcklbw %xmm0,%xmm0
punpcklwd %xmm0,%xmm0
pand   %xmm9,%xmm0
paddd  %xmm4,%xmm0
paddd  %xmm3,%xmm0
pcmpeqb %xmm8,%xmm5
punpcklbw %xmm5,%xmm5
punpcklwd %xmm5,%xmm5
pand   %xmm9,%xmm5
movdqa %xmm1,%xmm2
pcmpeqb %xmm11,%xmm2
punpcklbw %xmm2,%xmm2
punpcklwd %xmm2,%xmm2
pand   %xmm9,%xmm2
paddd  %xmm5,%xmm2
movdqa %xmm1,%xmm3
pcmpeqb %xmm12,%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
pand   %xmm9,%xmm3
paddd  %xmm2,%xmm3
movdqa %xmm1,%xmm4
pcmpeqb %xmm14,%xmm4
punpcklbw %xmm4,%xmm4
punpcklwd %xmm4,%xmm4
pand   %xmm9,%xmm4
paddd  %xmm3,%xmm4
movdqa %xmm1,%xmm2
pcmpeqb %xmm13,%xmm2
punpcklbw %xmm2,%xmm2
punpcklwd %xmm2,%xmm2
pand   %xmm9,%xmm2
paddd  %xmm4,%xmm2
paddd  %xmm0,%xmm2
movdqa %xmm1,%xmm0
pcmpeqb %xmm6,%xmm0
punpcklbw %xmm0,%xmm0
punpcklwd %xmm0,%xmm0
pand   %xmm9,%xmm0
pcmpeqb %xmm8,%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
pand   %xmm9,%xmm1
paddd  %xmm0,%xmm1
movdqa %xmm7,%xmm0
pcmpeqb %xmm11,%xmm0
punpcklbw %xmm0,%xmm0
punpcklwd %xmm0,%xmm0
pand   %xmm9,%xmm0
paddd  %xmm1,%xmm0
movdqa %xmm7,%xmm1
pcmpeqb %xmm12,%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
pand   %xmm9,%xmm1
paddd  %xmm0,%xmm1
movdqa %xmm7,%xmm3
pcmpeqb %xmm14,%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
pand   %xmm9,%xmm3
paddd  %xmm1,%xmm3
movdqa %xmm7,%xmm0
pcmpeqb %xmm13,%xmm0
punpcklbw %xmm0,%xmm0
punpcklwd %xmm0,%xmm0
pand   %xmm9,%xmm0
paddd  %xmm3,%xmm0
paddd  %xmm2,%xmm0
movdqa %xmm7,%xmm1
pcmpeqb %xmm6,%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
pand   %xmm9,%xmm1
pcmpeqb %xmm8,%xmm7
punpcklbw %xmm7,%xmm7
punpcklwd %xmm7,%xmm7
pand   %xmm9,%xmm7
paddd  %xmm1,%xmm7
pcmpeqb %xmm10,%xmm11
punpcklbw %xmm11,%xmm11
punpcklwd %xmm11,%xmm11
pand   %xmm9,%xmm11
paddd  %xmm7,%xmm11
pcmpeqb %xmm10,%xmm12
punpcklbw %xmm12,%xmm12
punpcklwd %xmm12,%xmm12
pand   %xmm9,%xmm12
paddd  %xmm11,%xmm12
pcmpeqb %xmm10,%xmm14
punpcklbw %xmm14,%xmm14
punpcklwd %xmm14,%xmm14
pand   %xmm9,%xmm14
paddd  %xmm12,%xmm14
pcmpeqb %xmm10,%xmm13
punpcklbw %xmm13,%xmm13
punpcklwd %xmm13,%xmm13
pand   %xmm9,%xmm13
paddd  %xmm14,%xmm13
pcmpeqb %xmm10,%xmm6
punpcklbw %xmm6,%xmm6
punpcklwd %xmm6,%xmm6
pand   %xmm9,%xmm6
paddd  %xmm13,%xmm6
paddd  %xmm0,%xmm6
pcmpeqb %xmm8,%xmm10
punpcklbw %xmm10,%xmm10
punpcklwd %xmm10,%xmm10
pand   %xmm9,%xmm10
paddd  %xmm6,%xmm10
pshufd $0xee,%xmm10,%xmm0
paddd  %xmm10,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%edi
mov    0x14(%rsp),%esi
movd   %esi,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
xor    %ecx,%ecx
cmp    $0x75,%sil
sete   %cl
xor    %edx,%edx
cmp    $0x79,%sil
sete   %dl
pcmpeqb 0xb9d(%rip),%xmm0
punpcklbw %xmm0,%xmm0
punpcklwd %xmm0,%xmm0
movmskps %xmm0,%esi
mov    %esi,%eax
shr    %al
and    $0x5,%al
sub    %al,%sil
mov    %esi,%eax
and    $0x33,%al
shr    $0x2,%sil
and    $0x33,%sil
add    %al,%sil
mov    %esi,%eax
shr    $0x4,%al
add    %sil,%al
and    $0xf,%al
movzbl %al,%esi
add    %ecx,%esi
add    %edx,%esi
add    %edi,%esi
lea    0xb89(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x18,%rsp
ret

LLVM IR (-O0):
@.str = [25 x i8] c"Please enter a string > \00"
@stdin = global i32 0
@.str.1 = [32 x i8] c"The number of syllables is %d.\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [21 x i8]
%3 = alloca i32
%4 = alloca i32
store i32 0, i32* %1
store i32 0, i32* %4
%5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0))
%6 = getelementptr inbounds [21 x i8], [21 x i8]* %2, i64 0, i64 0
%7 = load i32, i32* @stdin
%8 = call i32 @fgets(i8* %6, i32 19, i32 %7)
store i32 0, i32* %3
br label %9
9: ; preds = %73, %0
%10 = load i32, i32* %3
%11 = icmp slt i32 %10, 21
br i1 %11, label %12, label %76
12: ; preds = %9
%13 = load i32, i32* %3
%14 = sext i32 %13 to i64
%15 = getelementptr inbounds [21 x i8], [21 x i8]* %2, i64 0, i64 %14
%16 = load i8, i8* %15
%17 = sext i8 %16 to i32
%18 = icmp eq i32 %17, 97
br i1 %18, label %19, label %22
19: ; preds = %12
%20 = load i32, i32* %4
%21 = add nsw i32 %20, 1
store i32 %21, i32* %4
br label %22
22: ; preds = %19, %12
%23 = load i32, i32* %3
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds [21 x i8], [21 x i8]* %2, i64 0, i64 %24
%26 = load i8, i8* %25
%27 = sext i8 %26 to i32
%28 = icmp eq i32 %27, 101
br i1 %28, label %29, label %32
29: ; preds = %22
%30 = load i32, i32* %4
%31 = add nsw i32 %30, 1
store i32 %31, i32* %4
br label %32
32: ; preds = %29, %22
%33 = load i32, i32* %3
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds [21 x i8], [21 x i8]* %2, i64 0, i64 %34
%36 = load i8, i8* %35
%37 = sext i8 %36 to i32
%38 = icmp eq i32 %37, 105
br i1 %38, label %39, label %42
39: ; preds = %32
%40 = load i32, i32* %4
%41 = add nsw i32 %40, 1
store i32 %41, i32* %4
br label %42
42: ; preds = %39, %32
%43 = load i32, i32* %3
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds [21 x i8], [21 x i8]* %2, i64 0, i64 %44
%46 = load i8, i8* %45
%47 = sext i8 %46 to i32
%48 = icmp eq i32 %47, 111
br i1 %48, label %49, label %52
49: ; preds = %42
%50 = load i32, i32* %4
%51 = add nsw i32 %50, 1
store i32 %51, i32* %4
br label %52
52: ; preds = %49, %42
%53 = load i32, i32* %3
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds [21 x i8], [21 x i8]* %2, i64 0, i64 %54
%56 = load i8, i8* %55
%57 = sext i8 %56 to i32
%58 = icmp eq i32 %57, 117
br i1 %58, label %59, label %62
59: ; preds = %52
%60 = load i32, i32* %4
%61 = add nsw i32 %60, 1
store i32 %61, i32* %4
br label %62
62: ; preds = %59, %52
%63 = load i32, i32* %3
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds [21 x i8], [21 x i8]* %2, i64 0, i64 %64
%66 = load i8, i8* %65
%67 = sext i8 %66 to i32
%68 = icmp eq i32 %67, 121
br i1 %68, label %69, label %72
69: ; preds = %62
%70 = load i32, i32* %4
%71 = add nsw i32 %70, 1
store i32 %71, i32* %4
br label %72
72: ; preds = %69, %62
br label %73
73: ; preds = %72
%74 = load i32, i32* %3
%75 = add nsw i32 %74, 1
store i32 %75, i32* %3
br label %9
76: ; preds = %9
%77 = load i32, i32* %4
%78 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %77)
ret i32 0
}

LLVM IR (-O2):
@.str = [25 x i8] c"Please enter a string > \00"
@stdin = global i32 0
@.str.1 = [32 x i8] c"The number of syllables is %d.\0A\00"
define i32 @main() {
%1 = alloca [21 x i8]
%2 = getelementptr inbounds [21 x i8], [21 x i8]* %1, i64 0, i64 0
%3 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0))
%4 = load i32, i32* @stdin
%5 = call i32 @fgets(i8* %2, i32 19, i32 %4)
%6 = bitcast [21 x i8]* %1 to <4 x i8>*
%7 = load <4 x i8>, <4 x i8>* %6
%8 = getelementptr inbounds [21 x i8], [21 x i8]* %1, i64 0, i64 4
%9 = bitcast i8* %8 to <4 x i8>*
%10 = load <4 x i8>, <4 x i8>* %9
%11 = getelementptr inbounds [21 x i8], [21 x i8]* %1, i64 0, i64 8
%12 = bitcast i8* %11 to <4 x i8>*
%13 = load <4 x i8>, <4 x i8>* %12
%14 = getelementptr inbounds [21 x i8], [21 x i8]* %1, i64 0, i64 12
%15 = bitcast i8* %14 to <4 x i8>*
%16 = load <4 x i8>, <4 x i8>* %15
%17 = getelementptr inbounds [21 x i8], [21 x i8]* %1, i64 0, i64 16
%18 = bitcast i8* %17 to <4 x i8>*
%19 = load <4 x i8>, <4 x i8>* %18
%20 = icmp eq <4 x i8> %7, <i8 97, i8 97, i8 97, i8 97>
%21 = zext <4 x i1> %20 to <4 x i32>
%22 = icmp eq <4 x i8> %7, <i8 101, i8 101, i8 101, i8 101>
%23 = zext <4 x i1> %22 to <4 x i32>
%24 = add nuw nsw <4 x i32> %21, %23
%25 = icmp eq <4 x i8> %7, <i8 105, i8 105, i8 105, i8 105>
%26 = zext <4 x i1> %25 to <4 x i32>
%27 = add nuw nsw <4 x i32> %24, %26
%28 = icmp eq <4 x i8> %7, <i8 111, i8 111, i8 111, i8 111>
%29 = zext <4 x i1> %28 to <4 x i32>
%30 = add nuw nsw <4 x i32> %27, %29
%31 = icmp eq <4 x i8> %7, <i8 117, i8 117, i8 117, i8 117>
%32 = zext <4 x i1> %31 to <4 x i32>
%33 = add nuw nsw <4 x i32> %30, %32
%34 = icmp eq <4 x i8> %7, <i8 121, i8 121, i8 121, i8 121>
%35 = zext <4 x i1> %34 to <4 x i32>
%36 = add nuw nsw <4 x i32> %33, %35
%37 = icmp eq <4 x i8> %10, <i8 97, i8 97, i8 97, i8 97>
%38 = zext <4 x i1> %37 to <4 x i32>
%39 = add nuw nsw <4 x i32> %36, %38
%40 = icmp eq <4 x i8> %10, <i8 101, i8 101, i8 101, i8 101>
%41 = zext <4 x i1> %40 to <4 x i32>
%42 = add <4 x i32> %39, %41
%43 = icmp eq <4 x i8> %10, <i8 105, i8 105, i8 105, i8 105>
%44 = zext <4 x i1> %43 to <4 x i32>
%45 = add <4 x i32> %42, %44
%46 = icmp eq <4 x i8> %10, <i8 111, i8 111, i8 111, i8 111>
%47 = zext <4 x i1> %46 to <4 x i32>
%48 = add <4 x i32> %45, %47
%49 = icmp eq <4 x i8> %10, <i8 117, i8 117, i8 117, i8 117>
%50 = zext <4 x i1> %49 to <4 x i32>
%51 = add <4 x i32> %48, %50
%52 = icmp eq <4 x i8> %10, <i8 121, i8 121, i8 121, i8 121>
%53 = zext <4 x i1> %52 to <4 x i32>
%54 = add <4 x i32> %51, %53
%55 = icmp eq <4 x i8> %13, <i8 97, i8 97, i8 97, i8 97>
%56 = zext <4 x i1> %55 to <4 x i32>
%57 = add <4 x i32> %54, %56
%58 = icmp eq <4 x i8> %13, <i8 101, i8 101, i8 101, i8 101>
%59 = zext <4 x i1> %58 to <4 x i32>
%60 = add <4 x i32> %57, %59
%61 = icmp eq <4 x i8> %13, <i8 105, i8 105, i8 105, i8 105>
%62 = zext <4 x i1> %61 to <4 x i32>
%63 = add <4 x i32> %60, %62
%64 = icmp eq <4 x i8> %13, <i8 111, i8 111, i8 111, i8 111>
%65 = zext <4 x i1> %64 to <4 x i32>
%66 = add <4 x i32> %63, %65
%67 = icmp eq <4 x i8> %13, <i8 117, i8 117, i8 117, i8 117>
%68 = zext <4 x i1> %67 to <4 x i32>
%69 = add <4 x i32> %66, %68
%70 = icmp eq <4 x i8> %13, <i8 121, i8 121, i8 121, i8 121>
%71 = zext <4 x i1> %70 to <4 x i32>
%72 = add <4 x i32> %69, %71
%73 = icmp eq <4 x i8> %16, <i8 97, i8 97, i8 97, i8 97>
%74 = zext <4 x i1> %73 to <4 x i32>
%75 = add <4 x i32> %72, %74
%76 = icmp eq <4 x i8> %16, <i8 101, i8 101, i8 101, i8 101>
%77 = zext <4 x i1> %76 to <4 x i32>
%78 = add <4 x i32> %75, %77
%79 = icmp eq <4 x i8> %16, <i8 105, i8 105, i8 105, i8 105>
%80 = zext <4 x i1> %79 to <4 x i32>
%81 = add <4 x i32> %78, %80
%82 = icmp eq <4 x i8> %16, <i8 111, i8 111, i8 111, i8 111>
%83 = zext <4 x i1> %82 to <4 x i32>
%84 = add <4 x i32> %81, %83
%85 = icmp eq <4 x i8> %16, <i8 117, i8 117, i8 117, i8 117>
%86 = zext <4 x i1> %85 to <4 x i32>
%87 = add <4 x i32> %84, %86
%88 = icmp eq <4 x i8> %16, <i8 121, i8 121, i8 121, i8 121>
%89 = zext <4 x i1> %88 to <4 x i32>
%90 = add <4 x i32> %87, %89
%91 = icmp eq <4 x i8> %19, <i8 97, i8 97, i8 97, i8 97>
%92 = zext <4 x i1> %91 to <4 x i32>
%93 = add <4 x i32> %90, %92
%94 = icmp eq <4 x i8> %19, <i8 101, i8 101, i8 101, i8 101>
%95 = zext <4 x i1> %94 to <4 x i32>
%96 = add <4 x i32> %93, %95
%97 = icmp eq <4 x i8> %19, <i8 105, i8 105, i8 105, i8 105>
%98 = zext <4 x i1> %97 to <4 x i32>
%99 = add <4 x i32> %96, %98
%100 = icmp eq <4 x i8> %19, <i8 111, i8 111, i8 111, i8 111>
%101 = zext <4 x i1> %100 to <4 x i32>
%102 = add <4 x i32> %99, %101
%103 = icmp eq <4 x i8> %19, <i8 117, i8 117, i8 117, i8 117>
%104 = zext <4 x i1> %103 to <4 x i32>
%105 = add <4 x i32> %102, %104
%106 = icmp eq <4 x i8> %19, <i8 121, i8 121, i8 121, i8 121>
%107 = zext <4 x i1> %106 to <4 x i32>
%108 = add <4 x i32> %105, %107
%109 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %108)
%110 = getelementptr inbounds [21 x i8], [21 x i8]* %1, i64 0, i64 20
%111 = load i8, i8* %110
%112 = insertelement <4 x i8> poison, i8 %111, i64 0
%113 = shufflevector <4 x i8> %112, <4 x i8> poison, <4 x i32> zeroinitializer
%114 = icmp eq <4 x i8> %113, <i8 97, i8 101, i8 105, i8 111>
%115 = icmp eq i8 %111, 117
%116 = zext i1 %115 to i32
%117 = icmp eq i8 %111, 121
%118 = zext i1 %117 to i32
%119 = bitcast <4 x i1> %114 to i4
%120 = call i4 @llvm.ctpop.i4(i4 %119)
%121 = zext i4 %120 to i32
%122 = add nuw nsw i32 %121, %116
%123 = add nuw nsw i32 %122, %118
%124 = add nsw i32 %123, %109
%125 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %124)
ret i32 0
}