#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 */
scalar_t__ gets(char *);
int /*<<< orphan*/ printf(char *, int);
int strlen(char *);
int main() {
  char a[10000], b[1000][1000];
  int i, j, m, n, len, n_s, n_l;
  while (gets(a)) {
    j = 0;
    len = strlen(a);
    for (i = 0; i < len; i++) {
      if (a[i] >= 'a' && a[i] <= 'z' || a[i] >= 'A' && a[i] <= 'Z' ||
          a[i] == ' ') {
        a[i] = a[i];
      } else {
        a[i] = ' ';
      }
    }
    for (m = 0; m < len; m++) {
      if (a[m] != ' ')
        break;
    }
    n_s = m;
    for (n = len - 1; n >= 0; n--) {
      if (a[n] != ' ')
        break;
    }
    n_l = n;
    j = 0;
    for (i = n_s; i < n_l; i++) {
      if (a[i] != ' ') {
        b[j][i] = a[i];
      } else if (a[i] == ' ' && a[i + 1] != ' ') {
        j++;
      } else {
        j = j;
      }
    }
    printf("%d\n", j + 1);
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf6980,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x2720(%rbp),%rdi
call   1050 <gets@plt>
cmp    $0x0,%rax
je     140e <main+0x2de>
movl   $0x0,-0xf6968(%rbp)
lea    -0x2720(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0xf6974(%rbp)
movl   $0x0,-0xf6964(%rbp)
mov    -0xf6964(%rbp),%eax
cmp    -0xf6974(%rbp),%eax
jge    1251 <main+0x121>
movslq -0xf6964(%rbp),%rax
movsbl -0x2720(%rbp,%rax,1),%eax
ff
cmp    $0x61,%eax
jl     11c0 <main+0x90>
movslq -0xf6964(%rbp),%rax
movsbl -0x2720(%rbp,%rax,1),%eax
ff
cmp    $0x7a,%eax
jle    1208 <main+0xd8>
movslq -0xf6964(%rbp),%rax
movsbl -0x2720(%rbp,%rax,1),%eax
ff
cmp    $0x41,%eax
jl     11f0 <main+0xc0>
movslq -0xf6964(%rbp),%rax
movsbl -0x2720(%rbp,%rax,1),%eax
ff
cmp    $0x5a,%eax
jle    1208 <main+0xd8>
movslq -0xf6964(%rbp),%rax
movsbl -0x2720(%rbp,%rax,1),%eax
ff
cmp    $0x20,%eax
jne    1229 <main+0xf9>
movslq -0xf6964(%rbp),%rax
mov    -0x2720(%rbp,%rax,1),%cl
movslq -0xf6964(%rbp),%rax
mov    %cl,-0x2720(%rbp,%rax,1)
jmp    1238 <main+0x108>
movslq -0xf6964(%rbp),%rax
movb   $0x20,-0x2720(%rbp,%rax,1)
20
jmp    123d <main+0x10d>
mov    -0xf6964(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf6964(%rbp)
jmp    117e <main+0x4e>
movl   $0x0,-0xf696c(%rbp)
mov    -0xf696c(%rbp),%eax
cmp    -0xf6974(%rbp),%eax
jge    12a3 <main+0x173>
movslq -0xf696c(%rbp),%rax
movsbl -0x2720(%rbp,%rax,1),%eax
ff
cmp    $0x20,%eax
je     128a <main+0x15a>
jmp    12a3 <main+0x173>
jmp    128f <main+0x15f>
mov    -0xf696c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf696c(%rbp)
jmp    125b <main+0x12b>
mov    -0xf696c(%rbp),%eax
mov    %eax,-0xf6978(%rbp)
mov    -0xf6974(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xf6970(%rbp)
cmpl   $0x0,-0xf6970(%rbp)
jl     1301 <main+0x1d1>
movslq -0xf6970(%rbp),%rax
movsbl -0x2720(%rbp,%rax,1),%eax
ff
cmp    $0x20,%eax
je     12e8 <main+0x1b8>
jmp    1301 <main+0x1d1>
jmp    12ed <main+0x1bd>
mov    -0xf6970(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xf6970(%rbp)
jmp    12be <main+0x18e>
mov    -0xf6970(%rbp),%eax
mov    %eax,-0xf697c(%rbp)
movl   $0x0,-0xf6968(%rbp)
mov    -0xf6978(%rbp),%eax
mov    %eax,-0xf6964(%rbp)
mov    -0xf6964(%rbp),%eax
cmp    -0xf697c(%rbp),%eax
jge    13f4 <main+0x2c4>
movslq -0xf6964(%rbp),%rax
movsbl -0x2720(%rbp,%rax,1),%eax
ff
cmp    $0x20,%eax
je     1382 <main+0x252>
movslq -0xf6964(%rbp),%rax
mov    -0x2720(%rbp,%rax,1),%dl
movslq -0xf6968(%rbp),%rcx
lea    -0xf6960(%rbp),%rax
imul   $0x3e8,%rcx,%rcx
add    %rcx,%rax
movslq -0xf6964(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
jmp    13db <main+0x2ab>
movslq -0xf6964(%rbp),%rax
movsbl -0x2720(%rbp,%rax,1),%eax
ff
cmp    $0x20,%eax
jne    13ca <main+0x29a>
mov    -0xf6964(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x2720(%rbp,%rax,1),%eax
ff
cmp    $0x20,%eax
je     13ca <main+0x29a>
mov    -0xf6968(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf6968(%rbp)
jmp    13d6 <main+0x2a6>
mov    -0xf6968(%rbp),%eax
mov    %eax,-0xf6968(%rbp)
jmp    13db <main+0x2ab>
jmp    13e0 <main+0x2b0>
mov    -0xf6964(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf6964(%rbp)
jmp    1323 <main+0x1f3>
mov    -0xf6968(%rbp),%esi
add    $0x1,%esi
lea    0xbfc(%rip),%rdi
call   1040 <printf@plt>
jmp    1142 <main+0x12>
xor    %eax,%eax
add    $0xf6980,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
sub    $0x2718,%rsp
mov    %rsp,%rbx
mov    %rbx,%rdi
call   1050 <gets@plt>
test   %rax,%rax
je     13c2 <main+0x292>
lea    0xeeb(%rip),%r14
jmp    117c <main+0x4c>
nopw   0x0(%rax,%rax,1)
add    $0x1,%esi
mov    %r14,%rdi
call   1040 <printf@plt>
mov    %rbx,%rdi
call   1050 <gets@plt>
test   %rax,%rax
je     13c2 <main+0x292>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %eax,%ecx
test   %eax,%eax
movdqa 0xe6f(%rip),%xmm8
movdqa 0xe77(%rip),%xmm5
pcmpeqd %xmm6,%xmm6
movdqa 0xe7b(%rip),%xmm7
movdqa 0xe83(%rip),%xmm4
jle    1320 <main+0x1f0>
cmp    $0x8,%ecx
jae    11c0 <main+0x90>
xor    %eax,%eax
jmp    12f9 <main+0x1c9>
nop
mov    %ecx,%eax
and    $0xfffffff8,%eax
xor    %edx,%edx
jmp    11dd <main+0xad>
nopl   0x0(%rax)
add    $0x8,%rdx
cmp    %rdx,%rax
je     12c0 <main+0x190>
movq   (%rsp,%rdx,1),%xmm0
movdqa %xmm0,%xmm1
paddb  %xmm8,%xmm1
movdqa %xmm1,%xmm2
pmaxub %xmm5,%xmm2
pcmpeqb %xmm1,%xmm2
pxor   %xmm6,%xmm2
punpcklbw %xmm2,%xmm1
movdqa %xmm0,%xmm2
paddb  %xmm7,%xmm2
movdqa %xmm2,%xmm3
pmaxub %xmm5,%xmm3
pcmpeqb %xmm2,%xmm3
pxor   %xmm6,%xmm3
punpcklbw %xmm3,%xmm2
pcmpeqb %xmm4,%xmm0
pxor   %xmm6,%xmm0
punpcklbw %xmm0,%xmm0
pand   %xmm2,%xmm0
pand   %xmm1,%xmm0
psraw  $0x8,%xmm0
movd   %xmm0,%esi
test   $0x1,%sil
je     1242 <main+0x112>
movb   $0x20,(%rsp,%rdx,1)
shr    $0x10,%esi
test   $0x1,%sil
je     1250 <main+0x120>
movb   $0x20,0x1(%rsp,%rdx,1)
pextrw $0x2,%xmm0,%esi
test   $0x1,%sil
je     1260 <main+0x130>
movb   $0x20,0x2(%rsp,%rdx,1)
pextrw $0x3,%xmm0,%esi
test   $0x1,%sil
je     1270 <main+0x140>
movb   $0x20,0x3(%rsp,%rdx,1)
pextrw $0x4,%xmm0,%esi
test   $0x1,%sil
je     1280 <main+0x150>
movb   $0x20,0x4(%rsp,%rdx,1)
pextrw $0x5,%xmm0,%esi
test   $0x1,%sil
je     1290 <main+0x160>
movb   $0x20,0x5(%rsp,%rdx,1)
pextrw $0x6,%xmm0,%esi
test   $0x1,%sil
je     12a0 <main+0x170>
movb   $0x20,0x6(%rsp,%rdx,1)
pextrw $0x7,%xmm0,%esi
test   $0x1,%sil
je     11d0 <main+0xa0>
movb   $0x20,0x7(%rsp,%rdx,1)
jmp    11d0 <main+0xa0>
nopl   0x0(%rax)
cmp    %rcx,%rax
jne    12f9 <main+0x1c9>
test   %ecx,%ecx
jle    1320 <main+0x1f0>
xor    %edx,%edx
nopl   0x0(%rax,%rax,1)
cmpb   $0x20,(%rsp,%rdx,1)
jne    1322 <main+0x1f2>
add    $0x1,%rdx
cmp    %rdx,%rcx
jne    12d0 <main+0x1a0>
mov    %ecx,%edx
jmp    1322 <main+0x1f2>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0x1,%rax
cmp    %rax,%rcx
je     12c5 <main+0x195>
movzbl (%rsp,%rax,1),%edx
lea    -0x61(%rdx),%esi
cmp    $0x1a,%sil
jb     12f0 <main+0x1c0>
cmp    $0x20,%dl
je     12f0 <main+0x1c0>
add    $0xbf,%dl
cmp    $0x1a,%dl
jb     12f0 <main+0x1c0>
movb   $0x20,(%rsp,%rax,1)
jmp    12f0 <main+0x1c0>
nopl   0x0(%rax)
xor    %edx,%edx
test   %ecx,%ecx
mov    $0x0,%edi
cmovs  %ecx,%edi
add    $0xffffffff,%edi
nop
test   %ecx,%ecx
jle    1342 <main+0x212>
add    $0xffffffffffffffff,%rcx
mov    %ecx,%eax
cmpb   $0x20,(%rsp,%rax,1)
je     1330 <main+0x200>
mov    %ecx,%edi
xor    %esi,%esi
mov    %edi,%ecx
sub    %edx,%ecx
jle    1160 <main+0x30>
mov    %edx,%eax
add    $0x1,%edx
xor    %esi,%esi
cmp    %edx,%edi
jne    1380 <main+0x250>
test   $0x1,%cl
je     1160 <main+0x30>
cmpb   $0x20,(%rsp,%rax,1)
jne    1160 <main+0x30>
xor    %ecx,%ecx
cmpb   $0x20,0x1(%rax,%rbx,1)
setne  %cl
add    %ecx,%esi
jmp    1160 <main+0x30>
nopl   (%rax)
mov    %ecx,%edx
and    $0xfffffffe,%edx
xor    %esi,%esi
jmp    1399 <main+0x269>
nopl   0x0(%rax)
add    $0x2,%rax
add    $0xfffffffe,%edx
je     1359 <main+0x229>
cmpb   $0x20,(%rsp,%rax,1)
jne    13ac <main+0x27c>
xor    %edi,%edi
cmpb   $0x20,0x1(%rsp,%rax,1)
setne  %dil
add    %edi,%esi
cmpb   $0x20,0x1(%rsp,%rax,1)
jne    1390 <main+0x260>
xor    %edi,%edi
cmpb   $0x20,0x2(%rsp,%rax,1)
setne  %dil
add    %edi,%esi
jmp    1390 <main+0x260>
xor    %eax,%eax
add    $0x2718,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@.str = [4 x i8] c"%d\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [10000 x i8]
%3 = alloca [1000 x [1000 x i8]]
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
store i32 0, i32* %1
br label %11
11: ; preds = %159, %0
%12 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 0
%13 = call i64 @gets(i8* %12)
%14 = icmp ne i64 %13, 0
br i1 %14, label %15, label %163
15: ; preds = %11
store i32 0, i32* %5
%16 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 0
%17 = call i32 @strlen(i8* %16)
store i32 %17, i32* %8
store i32 0, i32* %4
br label %18
18: ; preds = %70, %15
%19 = load i32, i32* %4
%20 = load i32, i32* %8
%21 = icmp slt i32 %19, %20
br i1 %21, label %22, label %73
22: ; preds = %18
%23 = load i32, i32* %4
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 %24
%26 = load i8, i8* %25
%27 = sext i8 %26 to i32
%28 = icmp sge i32 %27, 97
br i1 %28, label %29, label %36
29: ; preds = %22
%30 = load i32, i32* %4
%31 = sext i32 %30 to i64
%32 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 %31
%33 = load i8, i8* %32
%34 = sext i8 %33 to i32
%35 = icmp sle i32 %34, 122
br i1 %35, label %57, label %36
36: ; preds = %29, %22
%37 = load i32, i32* %4
%38 = sext i32 %37 to i64
%39 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 %38
%40 = load i8, i8* %39
%41 = sext i8 %40 to i32
%42 = icmp sge i32 %41, 65
br i1 %42, label %43, label %50
43: ; preds = %36
%44 = load i32, i32* %4
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 %45
%47 = load i8, i8* %46
%48 = sext i8 %47 to i32
%49 = icmp sle i32 %48, 90
br i1 %49, label %57, label %50
50: ; preds = %43, %36
%51 = load i32, i32* %4
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 %52
%54 = load i8, i8* %53
%55 = sext i8 %54 to i32
%56 = icmp eq i32 %55, 32
br i1 %56, label %57, label %65
57: ; preds = %50, %43, %29
%58 = load i32, i32* %4
%59 = sext i32 %58 to i64
%60 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 %59
%61 = load i8, i8* %60
%62 = load i32, i32* %4
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 %63
store i8 %61, i8* %64
br label %69
65: ; preds = %50
%66 = load i32, i32* %4
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 %67
store i8 32, i8* %68
br label %69
69: ; preds = %65, %57
br label %70
70: ; preds = %69
%71 = load i32, i32* %4
%72 = add nsw i32 %71, 1
store i32 %72, i32* %4
br label %18
73: ; preds = %18
store i32 0, i32* %6
br label %74
74: ; preds = %87, %73
%75 = load i32, i32* %6
%76 = load i32, i32* %8
%77 = icmp slt i32 %75, %76
br i1 %77, label %78, label %90
78: ; preds = %74
%79 = load i32, i32* %6
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 %80
%82 = load i8, i8* %81
%83 = sext i8 %82 to i32
%84 = icmp ne i32 %83, 32
br i1 %84, label %85, label %86
85: ; preds = %78
br label %90
86: ; preds = %78
br label %87
87: ; preds = %86
%88 = load i32, i32* %6
%89 = add nsw i32 %88, 1
store i32 %89, i32* %6
br label %74
90: ; preds = %85, %74
%91 = load i32, i32* %6
store i32 %91, i32* %9
%92 = load i32, i32* %8
%93 = sub nsw i32 %92, 1
store i32 %93, i32* %7
br label %94
94: ; preds = %106, %90
%95 = load i32, i32* %7
%96 = icmp sge i32 %95, 0
br i1 %96, label %97, label %109
97: ; preds = %94
%98 = load i32, i32* %7
%99 = sext i32 %98 to i64
%100 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 %99
%101 = load i8, i8* %100
%102 = sext i8 %101 to i32
%103 = icmp ne i32 %102, 32
br i1 %103, label %104, label %105
104: ; preds = %97
br label %109
105: ; preds = %97
br label %106
106: ; preds = %105
%107 = load i32, i32* %7
%108 = add nsw i32 %107, -1
store i32 %108, i32* %7
br label %94
109: ; preds = %104, %94
%110 = load i32, i32* %7
store i32 %110, i32* %10
store i32 0, i32* %5
%111 = load i32, i32* %9
store i32 %111, i32* %4
br label %112
112: ; preds = %156, %109
%113 = load i32, i32* %4
%114 = load i32, i32* %10
%115 = icmp slt i32 %113, %114
br i1 %115, label %116, label %159
116: ; preds = %112
%117 = load i32, i32* %4
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 %118
%120 = load i8, i8* %119
%121 = sext i8 %120 to i32
%122 = icmp ne i32 %121, 32
br i1 %122, label %123, label %134
123: ; preds = %116
%124 = load i32, i32* %4
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 %125
%127 = load i8, i8* %126
%128 = load i32, i32* %5
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds [1000 x [1000 x i8]], [1000 x [1000 x i8]]* %3, i64 0, i64 %129
%131 = load i32, i32* %4
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds [1000 x i8], [1000 x i8]* %130, i64 0, i64 %132
store i8 %127, i8* %133
br label %155
134: ; preds = %116
%135 = load i32, i32* %4
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 %136
%138 = load i8, i8* %137
%139 = sext i8 %138 to i32
%140 = icmp eq i32 %139, 32
br i1 %140, label %141, label %152
141: ; preds = %134
%142 = load i32, i32* %4
%143 = add nsw i32 %142, 1
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds [10000 x i8], [10000 x i8]* %2, i64 0, i64 %144
%146 = load i8, i8* %145
%147 = sext i8 %146 to i32
%148 = icmp ne i32 %147, 32
br i1 %148, label %149, label %152
149: ; preds = %141
%150 = load i32, i32* %5
%151 = add nsw i32 %150, 1
store i32 %151, i32* %5
br label %154
152: ; preds = %141, %134
%153 = load i32, i32* %5
store i32 %153, i32* %5
br label %154
154: ; preds = %152, %149
br label %155
155: ; preds = %154, %123
br label %156
156: ; preds = %155
%157 = load i32, i32* %4
%158 = add nsw i32 %157, 1
store i32 %158, i32* %4
br label %112
159: ; preds = %112
%160 = load i32, i32* %5
%161 = add nsw i32 %160, 1
%162 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %161)
br label %11
163: ; preds = %11
ret i32 0
}

LLVM IR (-O2):
@.str = [4 x i8] c"%d\0A\00"
define i32 @main() {
%1 = alloca [10000 x i8]
%2 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 0
%3 = call i64 @gets(i8* %2)
%4 = icmp eq i64 %3, 0
br i1 %4, label %180, label %5
5: ; preds = %0, %174
%6 = call i32 @strlen(i8* %2)
%7 = icmp sgt i32 %6, 0
br i1 %7, label %8, label %71
8: ; preds = %5
%9 = zext i32 %6 to i64
%10 = icmp ult i32 %6, 8
br i1 %10, label %68, label %11
11: ; preds = %8
%12 = and i64 %9, 4294967288
br label %13
13: ; preds = %63, %11
%14 = phi i64 [ 0, %11 ], [ %64, %63 ]
%15 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %14
%16 = bitcast i8* %15 to <8 x i8>*
%17 = load <8 x i8>, <8 x i8>* %16
%18 = add <8 x i8> %17, <i8 -123, i8 -123, i8 -123, i8 -123, i8 -123, i8 -123, i8 -123, i8 -123>
%19 = icmp ult <8 x i8> %18, <i8 -26, i8 -26, i8 -26, i8 -26, i8 -26, i8 -26, i8 -26, i8 -26>
%20 = add <8 x i8> %17, <i8 -91, i8 -91, i8 -91, i8 -91, i8 -91, i8 -91, i8 -91, i8 -91>
%21 = icmp ult <8 x i8> %20, <i8 -26, i8 -26, i8 -26, i8 -26, i8 -26, i8 -26, i8 -26, i8 -26>
%22 = icmp ne <8 x i8> %17, <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>
%23 = and <8 x i1> %22, %21
%24 = select <8 x i1> %19, <8 x i1> %23, <8 x i1> zeroinitializer
%25 = extractelement <8 x i1> %24, i64 0
br i1 %25, label %26, label %28
26: ; preds = %13
%27 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %14
store i8 32, i8* %27
br label %28
28: ; preds = %26, %13
%29 = extractelement <8 x i1> %24, i64 1
br i1 %29, label %30, label %33
30: ; preds = %28
%31 = or i64 %14, 1
%32 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %31
store i8 32, i8* %32
br label %33
33: ; preds = %30, %28
%34 = extractelement <8 x i1> %24, i64 2
br i1 %34, label %35, label %38
35: ; preds = %33
%36 = or i64 %14, 2
%37 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %36
store i8 32, i8* %37
br label %38
38: ; preds = %35, %33
%39 = extractelement <8 x i1> %24, i64 3
br i1 %39, label %40, label %43
40: ; preds = %38
%41 = or i64 %14, 3
%42 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %41
store i8 32, i8* %42
br label %43
43: ; preds = %40, %38
%44 = extractelement <8 x i1> %24, i64 4
br i1 %44, label %45, label %48
45: ; preds = %43
%46 = or i64 %14, 4
%47 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %46
store i8 32, i8* %47
br label %48
48: ; preds = %45, %43
%49 = extractelement <8 x i1> %24, i64 5
br i1 %49, label %50, label %53
50: ; preds = %48
%51 = or i64 %14, 5
%52 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %51
store i8 32, i8* %52
br label %53
53: ; preds = %50, %48
%54 = extractelement <8 x i1> %24, i64 6
br i1 %54, label %55, label %58
55: ; preds = %53
%56 = or i64 %14, 6
%57 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %56
store i8 32, i8* %57
br label %58
58: ; preds = %55, %53
%59 = extractelement <8 x i1> %24, i64 7
br i1 %59, label %60, label %63
60: ; preds = %58
%61 = or i64 %14, 7
%62 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %61
store i8 32, i8* %62
br label %63
63: ; preds = %60, %58
%64 = add nuw i64 %14, 8
%65 = icmp eq i64 %64, %12
br i1 %65, label %66, label %13
66: ; preds = %63
%67 = icmp eq i64 %12, %9
br i1 %67, label %70, label %68
68: ; preds = %8, %66
%69 = phi i64 [ 0, %8 ], [ %12, %66 ]
br label %75
70: ; preds = %87, %66
br i1 %7, label %73, label %71
71: ; preds = %5, %70
%72 = zext i32 %6 to i64
br label %100
73: ; preds = %70
%74 = zext i32 %6 to i64
br label %90
75: ; preds = %68, %87
%76 = phi i64 [ %88, %87 ], [ %69, %68 ]
%77 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %76
%78 = load i8, i8* %77
%79 = add i8 %78, -97
%80 = icmp ult i8 %79, 26
br i1 %80, label %87, label %81
81: ; preds = %75
%82 = add i8 %78, -65
%83 = icmp ult i8 %82, 26
%84 = icmp eq i8 %78, 32
%85 = or i1 %84, %83
br i1 %85, label %87, label %86
86: ; preds = %81
store i8 32, i8* %77
br label %87
87: ; preds = %75, %81, %86
%88 = add nuw nsw i64 %76, 1
%89 = icmp eq i64 %88, %9
br i1 %89, label %70, label %75
90: ; preds = %73, %95
%91 = phi i64 [ 0, %73 ], [ %96, %95 ]
%92 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %91
%93 = load i8, i8* %92
%94 = icmp eq i8 %93, 32
br i1 %94, label %95, label %98
95: ; preds = %90
%96 = add nuw nsw i64 %91, 1
%97 = icmp eq i64 %96, %74
br i1 %97, label %100, label %90
98: ; preds = %90
%99 = trunc i64 %91 to i32
br label %100
100: ; preds = %95, %98, %71
%101 = phi i64 [ %72, %71 ], [ %74, %98 ], [ %74, %95 ]
%102 = phi i32 [ 0, %71 ], [ %99, %98 ], [ %6, %95 ]
%103 = call i32 @llvm.smin.i32(i32 %6, i32 0)
%104 = add i32 %103, -1
br label %105
105: ; preds = %110, %100
%106 = phi i64 [ %107, %110 ], [ %101, %100 ]
%107 = add nsw i64 %106, -1
%108 = trunc i64 %106 to i32
%109 = icmp sgt i32 %108, 0
br i1 %109, label %110, label %117
110: ; preds = %105
%111 = and i64 %107, 4294967295
%112 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %111
%113 = load i8, i8* %112
%114 = icmp eq i8 %113, 32
br i1 %114, label %105, label %115
115: ; preds = %110
%116 = trunc i64 %107 to i32
br label %117
117: ; preds = %105, %115
%118 = phi i32 [ %116, %115 ], [ %104, %105 ]
%119 = icmp sgt i32 %118, %102
br i1 %119, label %120, label %174
120: ; preds = %117
%121 = zext i32 %102 to i64
%122 = sub i32 %118, %102
%123 = add i32 %102, 1
%124 = and i32 %122, 1
%125 = icmp eq i32 %118, %123
br i1 %125, label %158, label %126
126: ; preds = %120
%127 = and i32 %122, -2
br label %128
128: ; preds = %154, %126
%129 = phi i64 [ %121, %126 ], [ %147, %154 ]
%130 = phi i32 [ 0, %126 ], [ %155, %154 ]
%131 = phi i32 [ 0, %126 ], [ %156, %154 ]
%132 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %129
%133 = load i8, i8* %132
%134 = icmp eq i8 %133, 32
%135 = add nuw nsw i64 %129, 1
br i1 %134, label %136, label %142
136: ; preds = %128
%137 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %135
%138 = load i8, i8* %137
%139 = icmp ne i8 %138, 32
%140 = zext i1 %139 to i32
%141 = add nsw i32 %130, %140
br label %142
142: ; preds = %128, %136
%143 = phi i32 [ %141, %136 ], [ %130, %128 ]
%144 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %135
%145 = load i8, i8* %144
%146 = icmp eq i8 %145, 32
%147 = add nuw nsw i64 %129, 2
br i1 %146, label %148, label %154
148: ; preds = %142
%149 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %147
%150 = load i8, i8* %149
%151 = icmp ne i8 %150, 32
%152 = zext i1 %151 to i32
%153 = add nsw i32 %143, %152
br label %154
154: ; preds = %148, %142
%155 = phi i32 [ %153, %148 ], [ %143, %142 ]
%156 = add i32 %131, 2
%157 = icmp eq i32 %156, %127
br i1 %157, label %158, label %128
158: ; preds = %154, %120
%159 = phi i32 [ undef, %120 ], [ %155, %154 ]
%160 = phi i64 [ %121, %120 ], [ %147, %154 ]
%161 = phi i32 [ 0, %120 ], [ %155, %154 ]
%162 = icmp eq i32 %124, 0
br i1 %162, label %174, label %163
163: ; preds = %158
%164 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %160
%165 = load i8, i8* %164
%166 = icmp eq i8 %165, 32
br i1 %166, label %167, label %174
167: ; preds = %163
%168 = add nuw nsw i64 %160, 1
%169 = getelementptr inbounds [10000 x i8], [10000 x i8]* %1, i64 0, i64 %168
%170 = load i8, i8* %169
%171 = icmp ne i8 %170, 32
%172 = zext i1 %171 to i32
%173 = add nsw i32 %161, %172
br label %174
174: ; preds = %158, %167, %163, %117
%175 = phi i32 [ 0, %117 ], [ %159, %158 ], [ %173, %167 ], [ %161, %163 ]
%176 = add nsw i32 %175, 1
%177 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %176)
%178 = call i64 @gets(i8* %2)
%179 = icmp eq i64 %178, 0
br i1 %179, label %180, label %5
180: ; preds = %174, %0
ret i32 0
}