#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(int *, int);
int /*<<< orphan*/ printf(char *, int);
int main() {
  int i;
  int lights[150] = {0};
  for (i = 0; i < 150; i++) {
    lights[i] = 1;
  }
  printf("begin 0: %d\n", count(lights, 150));
  for (i = 0; i < 150; i++) {
    if (i % 3 == 0) {
      if (lights[i] == 1) {
        lights[i] = 0;
      } else {
        lights[i] = 1;
      }
    }
  }
  printf("begin 1: %d\n", count(lights, 150));
  for (i = 0; i < 150; i++) {
    if (i % 5 == 0) {
      if (lights[i] == 1) {
        lights[i] = 0;
      } else {
        lights[i] = 1;
      }
    }
  }
  printf("begin 2: %d\n", count(lights, 150));
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x260,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x260(%rbp),%rdi
xor    %esi,%esi
mov    $0x258,%edx
call   1050 <memset@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x96,-0x8(%rbp)
jge    1186 <main+0x56>
movslq -0x8(%rbp),%rax
movl   $0x1,-0x260(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    115c <main+0x2c>
lea    -0x260(%rbp),%rdi
mov    $0x96,%esi
call   1030 <count@plt>
mov    %eax,%esi
lea    0xe60(%rip),%rdi
call   1040 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x96,-0x8(%rbp)
jge    121a <main+0xea>
mov    -0x8(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1207 <main+0xd7>
movslq -0x8(%rbp),%rax
cmpl   $0x1,-0x260(%rbp,%rax,4)
01
jne    11f3 <main+0xc3>
movslq -0x8(%rbp),%rax
movl   $0x0,-0x260(%rbp,%rax,4)
jmp    1202 <main+0xd2>
movslq -0x8(%rbp),%rax
movl   $0x1,-0x260(%rbp,%rax,4)
jmp    1207 <main+0xd7>
jmp    120c <main+0xdc>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    11ac <main+0x7c>
lea    -0x260(%rbp),%rdi
mov    $0x96,%esi
call   1030 <count@plt>
mov    %eax,%esi
lea    0xdd9(%rip),%rdi
call   1040 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x96,-0x8(%rbp)
jge    12ae <main+0x17e>
mov    -0x8(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    129b <main+0x16b>
movslq -0x8(%rbp),%rax
cmpl   $0x1,-0x260(%rbp,%rax,4)
01
jne    1287 <main+0x157>
movslq -0x8(%rbp),%rax
movl   $0x0,-0x260(%rbp,%rax,4)
jmp    1296 <main+0x166>
movslq -0x8(%rbp),%rax
movl   $0x1,-0x260(%rbp,%rax,4)
jmp    129b <main+0x16b>
jmp    12a0 <main+0x170>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1240 <main+0x110>
lea    -0x260(%rbp),%rdi
mov    $0x96,%esi
call   1030 <count@plt>
mov    %eax,%esi
lea    0xd52(%rip),%rdi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x260,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %rbx
sub    $0x258,%rsp
mov    %rsp,%rbx
xor    %ebp,%ebp
mov    $0x258,%edx
mov    %rbx,%rdi
xor    %esi,%esi
call   1050 <memset@plt>
movaps 0xeac(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps %xmm0,0x10(%rsp)
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x50(%rsp)
movaps %xmm0,0x60(%rsp)
movaps %xmm0,0x70(%rsp)
movaps %xmm0,0x80(%rsp)
movaps %xmm0,0x90(%rsp)
movaps %xmm0,0xa0(%rsp)
movaps %xmm0,0xb0(%rsp)
movaps %xmm0,0xc0(%rsp)
movaps %xmm0,0xd0(%rsp)
movaps %xmm0,0xe0(%rsp)
movaps %xmm0,0xf0(%rsp)
movaps %xmm0,0x100(%rsp)
movaps %xmm0,0x110(%rsp)
movaps %xmm0,0x120(%rsp)
movaps %xmm0,0x130(%rsp)
movaps %xmm0,0x140(%rsp)
movaps %xmm0,0x150(%rsp)
movaps %xmm0,0x160(%rsp)
movaps %xmm0,0x170(%rsp)
movaps %xmm0,0x180(%rsp)
movaps %xmm0,0x190(%rsp)
movaps %xmm0,0x1a0(%rsp)
movaps %xmm0,0x1b0(%rsp)
movaps %xmm0,0x1c0(%rsp)
movaps %xmm0,0x1d0(%rsp)
movaps %xmm0,0x1e0(%rsp)
movaps %xmm0,0x1f0(%rsp)
movaps %xmm0,0x200(%rsp)
movaps %xmm0,0x210(%rsp)
movaps %xmm0,0x220(%rsp)
movaps %xmm0,0x230(%rsp)
movaps %xmm0,0x240(%rsp)
movabs $0x100000001,%rax
mov    %rax,0x250(%rsp)
mov    %rbx,%rdi
mov    $0x96,%esi
call   1030 <count@plt>
lea    0xd87(%rip),%rdi
mov    %eax,%esi
call   1040 <printf@plt>
mov    $0xff,%al
mov    $0x1,%ecx
xor    %edx,%edx
jmp    12b6 <main+0x186>
nopl   0x0(%rax,%rax,1)
add    $0xfe,%al
add    $0x2,%rcx
add    $0xfe,%dl
add    $0x2,%bpl
cmp    $0x97,%rcx
je     1313 <main+0x1e3>
movzbl %cl,%esi
imul   $0xab,%esi,%esi
shr    $0x9,%esi
lea    (%rsi,%rsi,2),%esi
add    %al,%sil
movzbl %bpl,%edi
imul   $0xab,%edi,%edi
shr    $0x9,%edi
lea    (%rdi,%rdi,2),%edi
add    %dl,%dil
je     12f0 <main+0x1c0>
test   %sil,%sil
jne    12a0 <main+0x170>
jmp    1304 <main+0x1d4>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xor    %edi,%edi
cmpl   $0x1,-0x4(%rsp,%rcx,4)
setne  %dil
mov    %edi,-0x4(%rsp,%rcx,4)
test   %sil,%sil
jne    12a0 <main+0x170>
xor    %esi,%esi
cmpl   $0x1,(%rsp,%rcx,4)
setne  %sil
mov    %esi,(%rsp,%rcx,4)
jmp    12a0 <main+0x170>
mov    %rsp,%rdi
mov    $0x96,%esi
call   1030 <count@plt>
lea    0xcf6(%rip),%rdi
mov    %eax,%esi
call   1040 <printf@plt>
mov    $0xff,%al
mov    $0x1,%ecx
xor    %edx,%edx
xor    %esi,%esi
jmp    1356 <main+0x226>
nopl   0x0(%rax,%rax,1)
add    $0xfe,%al
add    $0x2,%rcx
add    $0xfe,%sil
add    $0x2,%dl
cmp    $0x97,%rcx
je     13b3 <main+0x283>
movzbl %cl,%edi
imul   $0xcd,%edi,%edi
shr    $0xa,%edi
lea    (%rdi,%rdi,4),%edi
add    %al,%dil
movzbl %dl,%ebp
imul   $0xcd,%ebp,%ebp
shr    $0xa,%ebp
lea    0x0(%rbp,%rbp,4),%ebp
add    %sil,%bpl
je     1390 <main+0x260>
test   %dil,%dil
jne    1340 <main+0x210>
jmp    13a4 <main+0x274>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xor    %ebp,%ebp
cmpl   $0x1,-0x4(%rsp,%rcx,4)
setne  %bpl
mov    %ebp,-0x4(%rsp,%rcx,4)
test   %dil,%dil
jne    1340 <main+0x210>
xor    %edi,%edi
cmpl   $0x1,(%rsp,%rcx,4)
setne  %dil
mov    %edi,(%rsp,%rcx,4)
jmp    1340 <main+0x210>
mov    %rsp,%rdi
mov    $0x96,%esi
call   1030 <count@plt>
lea    0xc63(%rip),%rdi
mov    %eax,%esi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x258,%rsp
pop    %rbx
pop    %rbp
ret

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

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