#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 *, int, ...);
int /*<<< orphan*/ scanf(char *, int *);
int main(int argc, const char *const argv[]) {
  int array[20];
  for (int i = 0; i < (sizeof array) / (sizeof array[0]); ++i) {
    printf("Введите элемент a[%d]: ", i);
    scanf("%d", array + i);
  }
  int positive_sum = 0, negative_count = 0;
  for (int i = 0; i < (sizeof array) / (sizeof array[0]); ++i) {
    if (array[i] >= 0) {
      positive_sum += array[i];
    } else {
      ++negative_count;
    }
  }
  printf("\nСумма положительных элементов: %d\n"
         "Число отрицательных элементов: %d\n",
         positive_sum, negative_count);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x64(%rbp)
movslq -0x64(%rbp),%rax
cmp    $0x14,%rax
jae    1185 <main+0x65>
mov    -0x64(%rbp),%esi
lea    0xeab(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    -0x60(%rbp),%rsi
movslq -0x64(%rbp),%rax
shl    $0x2,%rax
add    %rax,%rsi
lea    0xeb4(%rip),%rdi
call   1040 <scanf@plt>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    113d <main+0x1d>
movl   $0x0,-0x68(%rbp)
movl   $0x0,-0x6c(%rbp)
movl   $0x0,-0x70(%rbp)
movslq -0x70(%rbp),%rax
cmp    $0x14,%rax
jae    11e6 <main+0xc6>
movslq -0x70(%rbp),%rax
cmpl   $0x0,-0x60(%rbp,%rax,4)
jl     11ca <main+0xaa>
movslq -0x70(%rbp),%rax
mov    -0x60(%rbp,%rax,4),%eax
add    -0x68(%rbp),%eax
mov    %eax,-0x68(%rbp)
jmp    11d3 <main+0xb3>
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    11d8 <main+0xb8>
mov    -0x70(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x70(%rbp)
jmp    119a <main+0x7a>
mov    -0x68(%rbp),%esi
mov    -0x6c(%rbp),%edx
lea    0xe36(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
sub    $0x58,%rsp
lea    0xee2(%rip),%r14
mov    %r14,%rdi
xor    %esi,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xef5(%rip),%rbx
mov    %rsp,%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x4(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x8(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xc(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0x4,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x10(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0x5,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x14(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0x6,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x18(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0x7,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x1c(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0x8,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x20(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0x9,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x24(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0xa,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x28(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0xb,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x2c(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0xc,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x30(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0xd,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x34(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0xe,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x38(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0xf,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x3c(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0x10,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x40(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0x11,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x44(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0x12,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x48(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
mov    %r14,%rdi
mov    $0x13,%esi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x4c(%rsp),%rsi
mov    %rbx,%rdi
call   1040 <scanf@plt>
pcmpeqd %xmm1,%xmm1
movdqa (%rsp),%xmm2
movdqa 0x10(%rsp),%xmm0
movdqa 0x20(%rsp),%xmm3
movdqa 0x30(%rsp),%xmm4
movdqa %xmm2,%xmm5
pcmpgtd %xmm1,%xmm5
pand   %xmm5,%xmm2
movdqa %xmm0,%xmm6
pcmpgtd %xmm1,%xmm6
pand   %xmm6,%xmm0
paddd  %xmm2,%xmm0
paddd  %xmm5,%xmm6
movdqa %xmm3,%xmm2
pcmpgtd %xmm1,%xmm2
movdqa %xmm4,%xmm5
pcmpgtd %xmm1,%xmm5
movdqa %xmm2,%xmm7
paddd  %xmm5,%xmm7
paddd  %xmm6,%xmm7
pand   %xmm3,%xmm2
movdqa 0x40(%rsp),%xmm3
movdqa %xmm3,%xmm6
pcmpgtd %xmm1,%xmm6
paddd  %xmm6,%xmm7
pand   %xmm4,%xmm5
paddd  %xmm2,%xmm5
paddd  %xmm0,%xmm5
pand   %xmm3,%xmm6
paddd  %xmm5,%xmm6
paddd  0xc17(%rip),%xmm7
pshufd $0xee,%xmm6,%xmm0
paddd  %xmm6,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%esi
pshufd $0xee,%xmm7,%xmm0
paddd  %xmm7,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
movd   %xmm1,%edx
lea    0xc1d(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x58,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@.str = [38 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 \D1\8D\D0\BB\D0\B5\D0\BC\D0\B5\D0\BD\D1\82 a[%d]: \00"
@.str.1 = [3 x i8] c"%d\00"
@.str.2 = [124 x i8] c"\0A\D0\A1\D1\83\D0\BC\D0\BC\D0\B0 \D0\BF\D0\BE\D0\BB\D0\BE\D0\B6\D0\B8\D1\82\D0\B5\D0\BB\D1\8C\D0\BD\D1\8B\D1\85 \D1\8D\D0\BB\D0\B5\D0\BC\D0\B5\D0\BD\D1\82\D0\BE\D0\B2: %d\0A\D0\A7\D0\B8\D1\81\D0\BB\D0\BE \D0\BE\D1\82\D1\80\D0\B8\D1\86\D0\B0\D1\82\D0\B5\D0\BB\D1\8C\D0\BD\D1\8B\D1\85 \D1\8D\D0\BB\D0\B5\D0\BC\D0\B5\D0\BD\D1\82\D0\BE\D0\B2: %d\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca [20 x i32]
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i32 0, i32* %7
br label %11
11: ; preds = %23, %2
%12 = load i32, i32* %7
%13 = sext i32 %12 to i64
%14 = icmp ult i64 %13, 20
br i1 %14, label %15, label %26
15: ; preds = %11
%16 = load i32, i32* %7
%17 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 %16)
%18 = getelementptr inbounds [20 x i32], [20 x i32]* %6, i64 0, i64 0
%19 = load i32, i32* %7
%20 = sext i32 %19 to i64
%21 = getelementptr inbounds i32, i32* %18, i64 %20
%22 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %21)
br label %23
23: ; preds = %15
%24 = load i32, i32* %7
%25 = add nsw i32 %24, 1
store i32 %25, i32* %7
br label %11
26: ; preds = %11
store i32 0, i32* %8
store i32 0, i32* %9
store i32 0, i32* %10
br label %27
27: ; preds = %48, %26
%28 = load i32, i32* %10
%29 = sext i32 %28 to i64
%30 = icmp ult i64 %29, 20
br i1 %30, label %31, label %51
31: ; preds = %27
%32 = load i32, i32* %10
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds [20 x i32], [20 x i32]* %6, i64 0, i64 %33
%35 = load i32, i32* %34
%36 = icmp sge i32 %35, 0
br i1 %36, label %37, label %44
37: ; preds = %31
%38 = load i32, i32* %10
%39 = sext i32 %38 to i64
%40 = getelementptr inbounds [20 x i32], [20 x i32]* %6, i64 0, i64 %39
%41 = load i32, i32* %40
%42 = load i32, i32* %8
%43 = add nsw i32 %42, %41
store i32 %43, i32* %8
br label %47
44: ; preds = %31
%45 = load i32, i32* %9
%46 = add nsw i32 %45, 1
store i32 %46, i32* %9
br label %47
47: ; preds = %44, %37
br label %48
48: ; preds = %47
%49 = load i32, i32* %10
%50 = add nsw i32 %49, 1
store i32 %50, i32* %10
br label %27
51: ; preds = %27
%52 = load i32, i32* %8
%53 = load i32, i32* %9
%54 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([124 x i8], [124 x i8]* @.str.2, i64 0, i64 0), i32 %52, i32 %53)
ret i32 0
}

LLVM IR (-O2):
@.str = [38 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 \D1\8D\D0\BB\D0\B5\D0\BC\D0\B5\D0\BD\D1\82 a[%d]: \00"
@.str.1 = [3 x i8] c"%d\00"
@.str.2 = [124 x i8] c"\0A\D0\A1\D1\83\D0\BC\D0\BC\D0\B0 \D0\BF\D0\BE\D0\BB\D0\BE\D0\B6\D0\B8\D1\82\D0\B5\D0\BB\D1\8C\D0\BD\D1\8B\D1\85 \D1\8D\D0\BB\D0\B5\D0\BC\D0\B5\D0\BD\D1\82\D0\BE\D0\B2: %d\0A\D0\A7\D0\B8\D1\81\D0\BB\D0\BE \D0\BE\D1\82\D1\80\D0\B8\D1\86\D0\B0\D1\82\D0\B5\D0\BB\D1\8C\D0\BD\D1\8B\D1\85 \D1\8D\D0\BB\D0\B5\D0\BC\D0\B5\D0\BD\D1\82\D0\BE\D0\B2: %d\0A\00"
define i32 @main(i32 %0, i8** nocapture readnone %1) {
%3 = alloca [20 x i32]
%4 = bitcast [20 x i32]* %3 to i8*
%5 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 0)
%6 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 0
%7 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %6)
%8 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 1)
%9 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 1
%10 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %9)
%11 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 2)
%12 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 2
%13 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %12)
%14 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 3)
%15 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 3
%16 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %15)
%17 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 4)
%18 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 4
%19 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %18)
%20 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 5)
%21 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 5
%22 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %21)
%23 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 6)
%24 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 6
%25 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %24)
%26 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 7)
%27 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 7
%28 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %27)
%29 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 8)
%30 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 8
%31 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %30)
%32 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 9)
%33 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 9
%34 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %33)
%35 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 10)
%36 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 10
%37 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %36)
%38 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 11)
%39 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 11
%40 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %39)
%41 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 12)
%42 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 12
%43 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %42)
%44 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 13)
%45 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 13
%46 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %45)
%47 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 14)
%48 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 14
%49 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %48)
%50 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 15)
%51 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 15
%52 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %51)
%53 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 16)
%54 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 16
%55 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %54)
%56 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 17)
%57 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 17
%58 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %57)
%59 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 18)
%60 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 18
%61 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %60)
%62 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), i32 19)
%63 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 19
%64 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %63)
%65 = bitcast [20 x i32]* %3 to <4 x i32>*
%66 = load <4 x i32>, <4 x i32>* %65
%67 = icmp sgt <4 x i32> %66, <i32 -1, i32 -1, i32 -1, i32 -1>
%68 = select <4 x i1> %67, <4 x i32> %66, <4 x i32> zeroinitializer
%69 = xor <4 x i1> %67, <i1 true, i1 true, i1 true, i1 true>
%70 = zext <4 x i1> %69 to <4 x i32>
%71 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 4
%72 = bitcast i32* %71 to <4 x i32>*
%73 = load <4 x i32>, <4 x i32>* %72
%74 = icmp sgt <4 x i32> %73, <i32 -1, i32 -1, i32 -1, i32 -1>
%75 = select <4 x i1> %74, <4 x i32> %73, <4 x i32> zeroinitializer
%76 = add <4 x i32> %75, %68
%77 = xor <4 x i1> %74, <i1 true, i1 true, i1 true, i1 true>
%78 = zext <4 x i1> %77 to <4 x i32>
%79 = add nuw nsw <4 x i32> %70, %78
%80 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 8
%81 = bitcast i32* %80 to <4 x i32>*
%82 = load <4 x i32>, <4 x i32>* %81
%83 = icmp sgt <4 x i32> %82, <i32 -1, i32 -1, i32 -1, i32 -1>
%84 = select <4 x i1> %83, <4 x i32> %82, <4 x i32> zeroinitializer
%85 = add <4 x i32> %84, %76
%86 = xor <4 x i1> %83, <i1 true, i1 true, i1 true, i1 true>
%87 = zext <4 x i1> %86 to <4 x i32>
%88 = add nuw nsw <4 x i32> %79, %87
%89 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 12
%90 = bitcast i32* %89 to <4 x i32>*
%91 = load <4 x i32>, <4 x i32>* %90
%92 = icmp sgt <4 x i32> %91, <i32 -1, i32 -1, i32 -1, i32 -1>
%93 = select <4 x i1> %92, <4 x i32> %91, <4 x i32> zeroinitializer
%94 = add <4 x i32> %93, %85
%95 = xor <4 x i1> %92, <i1 true, i1 true, i1 true, i1 true>
%96 = zext <4 x i1> %95 to <4 x i32>
%97 = add nuw nsw <4 x i32> %88, %96
%98 = getelementptr inbounds [20 x i32], [20 x i32]* %3, i64 0, i64 16
%99 = bitcast i32* %98 to <4 x i32>*
%100 = load <4 x i32>, <4 x i32>* %99
%101 = icmp sgt <4 x i32> %100, <i32 -1, i32 -1, i32 -1, i32 -1>
%102 = select <4 x i1> %101, <4 x i32> %100, <4 x i32> zeroinitializer
%103 = add <4 x i32> %102, %94
%104 = xor <4 x i1> %101, <i1 true, i1 true, i1 true, i1 true>
%105 = zext <4 x i1> %104 to <4 x i32>
%106 = add nuw nsw <4 x i32> %97, %105
%107 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %103)
%108 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %106)
%109 = call i32 (i8*, i32, ...) @printf(i8* getelementptr inbounds ([124 x i8], [124 x i8]* @.str.2, i64 0, i64 0), i32 %107, i32 %108)
ret i32 0
}