#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 /*<<< orphan*/ scanf(char *, int *);
int main(void) {
  int matriza[5], matrizb[5], indice, cont, soma;
  for (indice = 0; indice < 5; indice++) {
    printf("\n digite um valor: ");
    scanf("%d", &matriza[indice]);
    for (soma = 1, cont = matriza[indice]; cont > 1; cont--)
      soma *= cont;
    matrizb[indice] = soma;
  }
  for (indice = 0; indice < 5; indice++)
    printf("\n O valor do vetor B e: %d \n", matrizb[indice]);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x44(%rbp)
cmpl   $0x5,-0x44(%rbp)
jge    11b6 <main+0x96>
lea    0xeb9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movslq -0x44(%rbp),%rax
lea    -0x20(%rbp),%rsi
shl    $0x2,%rax
add    %rax,%rsi
lea    0xeb0(%rip),%rdi
call   1040 <scanf@plt>
movl   $0x1,-0x4c(%rbp)
movslq -0x44(%rbp),%rax
mov    -0x20(%rbp,%rax,4),%eax
mov    %eax,-0x48(%rbp)
cmpl   $0x1,-0x48(%rbp)
jle    119d <main+0x7d>
mov    -0x48(%rbp),%eax
imul   -0x4c(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x48(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x48(%rbp)
jmp    117b <main+0x5b>
mov    -0x4c(%rbp),%ecx
movslq -0x44(%rbp),%rax
mov    %ecx,-0x40(%rbp,%rax,4)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1136 <main+0x16>
movl   $0x0,-0x44(%rbp)
cmpl   $0x5,-0x44(%rbp)
jge    11eb <main+0xcb>
movslq -0x44(%rbp),%rax
mov    -0x40(%rbp,%rax,4),%esi
lea    0xe41(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    11bd <main+0x9d>
mov    -0x4(%rbp),%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
lea    0xf6b(%rip),%rdi
xor    %ebx,%ebx
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xf6f(%rip),%rdi
mov    %rsp,%rsi
call   1040 <scanf@plt>
mov    (%rsp),%eax
mov    $0x1,%r14d
mov    %eax,%ecx
mov    $0x1,%r15d
sub    $0x2,%ecx
jl     13ae <main+0x28e>
cmovb  %ebx,%ecx
add    $0x1,%ecx
mov    $0x1,%r15d
cmp    $0x8,%ecx
jb     13a0 <main+0x280>
mov    %ecx,%edx
and    $0xfffffff8,%edx
movd   %eax,%xmm0
pshufd $0x0,%xmm0,%xmm6
paddd  0xe6e(%rip),%xmm6
lea    -0x8(%rdx),%ebp
mov    %ebp,%edi
shr    $0x3,%edi
add    $0x1,%edi
mov    %edi,%esi
and    $0x3,%esi
cmp    $0x18,%ebp
jae    11b8 <main+0x98>
movdqa 0xe61(%rip),%xmm1
movdqa %xmm1,%xmm2
jmp    12f1 <main+0x1d1>
and    $0xfffffffc,%edi
movdqa 0xe4d(%rip),%xmm1
movdqa 0xe64(%rip),%xmm9
movdqa 0xe6b(%rip),%xmm10
movdqa 0xe72(%rip),%xmm11
movdqa 0xe79(%rip),%xmm12
movdqa 0xe80(%rip),%xmm13
movdqa 0xe87(%rip),%xmm14
movdqa 0xe8e(%rip),%xmm15
movdqa %xmm1,%xmm2
cs nopw 0x0(%rax,%rax,1)
movdqa %xmm6,%xmm0
paddd  0xe04(%rip),%xmm0
pshufd $0xf5,%xmm6,%xmm7
pshufd $0xf5,%xmm1,%xmm3
pmuludq %xmm7,%xmm3
pmuludq %xmm6,%xmm1
pshufd $0xf5,%xmm2,%xmm7
pshufd $0xf5,%xmm0,%xmm4
pmuludq %xmm7,%xmm4
pmuludq %xmm2,%xmm0
movdqa %xmm6,%xmm2
paddd  %xmm9,%xmm2
movdqa %xmm6,%xmm7
paddd  %xmm10,%xmm7
pmuludq %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
pmuludq %xmm3,%xmm2
pmuludq %xmm7,%xmm0
pshufd $0xf5,%xmm7,%xmm3
pmuludq %xmm4,%xmm3
movdqa %xmm6,%xmm4
paddd  %xmm11,%xmm4
movdqa %xmm6,%xmm7
paddd  %xmm12,%xmm7
pshufd $0xf5,%xmm4,%xmm5
pmuludq %xmm2,%xmm5
pmuludq %xmm1,%xmm4
pshufd $0xf5,%xmm7,%xmm8
pmuludq %xmm3,%xmm8
pmuludq %xmm0,%xmm7
movdqa %xmm6,%xmm0
paddd  %xmm13,%xmm0
movdqa %xmm6,%xmm3
paddd  %xmm14,%xmm3
pmuludq %xmm0,%xmm4
pshufd $0xe8,%xmm4,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm5,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm1
pmuludq %xmm3,%xmm7
pshufd $0xe8,%xmm7,%xmm2
pshufd $0xf5,%xmm3,%xmm0
pmuludq %xmm8,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm2
paddd  %xmm15,%xmm6
add    $0xfffffffc,%edi
jne    1210 <main+0xf0>
test   %esi,%esi
je     1361 <main+0x241>
movdqa 0xd23(%rip),%xmm3
movdqa 0xd2b(%rip),%xmm4
cs nopw 0x0(%rax,%rax,1)
nop
movdqa %xmm6,%xmm0
paddd  %xmm3,%xmm0
pshufd $0xf5,%xmm1,%xmm5
pmuludq %xmm6,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm6,%xmm7
pmuludq %xmm5,%xmm7
pshufd $0xe8,%xmm7,%xmm5
punpckldq %xmm5,%xmm1
pshufd $0xf5,%xmm2,%xmm5
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm5,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm2
paddd  %xmm4,%xmm6
add    $0xffffffff,%esi
jne    1310 <main+0x1f0>
pshufd $0xf5,%xmm1,%xmm0
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xee,%xmm2,%xmm0
pmuludq %xmm2,%xmm0
pshufd $0xaa,%xmm3,%xmm1
pmuludq %xmm3,%xmm1
pmuludq %xmm0,%xmm1
movd   %xmm1,%r15d
cmp    %edx,%ecx
je     13ae <main+0x28e>
sub    %edx,%eax
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
imul   %eax,%r15d
lea    -0x1(%rax),%ecx
cmp    $0x2,%eax
mov    %ecx,%eax
ja     13a0 <main+0x280>
lea    0xceb(%rip),%rdi
xor    %ebx,%ebx
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x4(%rsp),%rsi
lea    0xcea(%rip),%rdi
call   1040 <scanf@plt>
mov    0x4(%rsp),%eax
mov    %eax,%ecx
sub    $0x2,%ecx
jl     161e <main+0x4fe>
cmovb  %ebx,%ecx
add    $0x1,%ecx
mov    $0x1,%r14d
cmp    $0x8,%ecx
jb     1610 <main+0x4f0>
mov    %ecx,%edx
and    $0xfffffff8,%edx
movd   %eax,%xmm0
pshufd $0x0,%xmm0,%xmm6
paddd  0xbf7(%rip),%xmm6
lea    -0x8(%rdx),%ebp
mov    %ebp,%edi
shr    $0x3,%edi
add    $0x1,%edi
mov    %edi,%esi
and    $0x3,%esi
cmp    $0x18,%ebp
jae    142f <main+0x30f>
movdqa 0xbea(%rip),%xmm1
movdqa %xmm1,%xmm2
jmp    1561 <main+0x441>
and    $0xfffffffc,%edi
movdqa 0xbd6(%rip),%xmm1
movdqa 0xbed(%rip),%xmm9
movdqa 0xbf4(%rip),%xmm10
movdqa 0xbfb(%rip),%xmm11
movdqa 0xc02(%rip),%xmm12
movdqa 0xc09(%rip),%xmm13
movdqa 0xc10(%rip),%xmm14
movdqa 0xc17(%rip),%xmm15
movdqa %xmm1,%xmm2
nopl   (%rax)
movdqa %xmm6,%xmm0
paddd  0xb94(%rip),%xmm0
pshufd $0xf5,%xmm6,%xmm7
pshufd $0xf5,%xmm1,%xmm3
pmuludq %xmm7,%xmm3
pmuludq %xmm6,%xmm1
pshufd $0xf5,%xmm2,%xmm7
pshufd $0xf5,%xmm0,%xmm4
pmuludq %xmm7,%xmm4
pmuludq %xmm2,%xmm0
movdqa %xmm6,%xmm2
paddd  %xmm9,%xmm2
movdqa %xmm6,%xmm7
paddd  %xmm10,%xmm7
pmuludq %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
pmuludq %xmm3,%xmm2
pmuludq %xmm7,%xmm0
pshufd $0xf5,%xmm7,%xmm3
pmuludq %xmm4,%xmm3
movdqa %xmm6,%xmm4
paddd  %xmm11,%xmm4
movdqa %xmm6,%xmm7
paddd  %xmm12,%xmm7
pshufd $0xf5,%xmm4,%xmm5
pmuludq %xmm2,%xmm5
pmuludq %xmm1,%xmm4
pshufd $0xf5,%xmm7,%xmm8
pmuludq %xmm3,%xmm8
pmuludq %xmm0,%xmm7
movdqa %xmm6,%xmm0
paddd  %xmm13,%xmm0
movdqa %xmm6,%xmm3
paddd  %xmm14,%xmm3
pmuludq %xmm0,%xmm4
pshufd $0xe8,%xmm4,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm5,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm1
pmuludq %xmm3,%xmm7
pshufd $0xe8,%xmm7,%xmm2
pshufd $0xf5,%xmm3,%xmm0
pmuludq %xmm8,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm2
paddd  %xmm15,%xmm6
add    $0xfffffffc,%edi
jne    1480 <main+0x360>
test   %esi,%esi
je     15d1 <main+0x4b1>
movdqa 0xab3(%rip),%xmm3
movdqa 0xabb(%rip),%xmm4
cs nopw 0x0(%rax,%rax,1)
nop
movdqa %xmm6,%xmm0
paddd  %xmm3,%xmm0
pshufd $0xf5,%xmm1,%xmm5
pmuludq %xmm6,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm6,%xmm7
pmuludq %xmm5,%xmm7
pshufd $0xe8,%xmm7,%xmm5
punpckldq %xmm5,%xmm1
pshufd $0xf5,%xmm2,%xmm5
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm5,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm2
paddd  %xmm4,%xmm6
add    $0xffffffff,%esi
jne    1580 <main+0x460>
pshufd $0xf5,%xmm1,%xmm0
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xee,%xmm2,%xmm0
pmuludq %xmm2,%xmm0
pshufd $0xaa,%xmm3,%xmm1
pmuludq %xmm3,%xmm1
pmuludq %xmm0,%xmm1
movd   %xmm1,%r14d
cmp    %edx,%ecx
je     161e <main+0x4fe>
sub    %edx,%eax
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
imul   %eax,%r14d
lea    -0x1(%rax),%ecx
cmp    $0x2,%eax
mov    %ecx,%eax
ja     1610 <main+0x4f0>
lea    0xa7b(%rip),%rdi
xor    %ebx,%ebx
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x8(%rsp),%rsi
lea    0xa7a(%rip),%rdi
call   1040 <scanf@plt>
mov    0x8(%rsp),%eax
mov    $0x1,%r12d
mov    %eax,%ecx
mov    $0x1,%ebp
sub    $0x2,%ecx
jl     189d <main+0x77d>
cmovb  %ebx,%ecx
add    $0x1,%ecx
mov    $0x1,%ebp
cmp    $0x8,%ecx
jb     1890 <main+0x770>
mov    %ecx,%edx
and    $0xfffffff8,%edx
movd   %eax,%xmm0
pshufd $0x0,%xmm0,%xmm6
paddd  0x97d(%rip),%xmm6
lea    -0x8(%rdx),%ebp
mov    %ebp,%edi
shr    $0x3,%edi
add    $0x1,%edi
mov    %edi,%esi
and    $0x3,%esi
cmp    $0x18,%ebp
jae    16a9 <main+0x589>
movdqa 0x970(%rip),%xmm1
movdqa %xmm1,%xmm2
jmp    17e1 <main+0x6c1>
and    $0xfffffffc,%edi
movdqa 0x95c(%rip),%xmm1
movdqa 0x973(%rip),%xmm9
movdqa 0x97a(%rip),%xmm10
movdqa 0x981(%rip),%xmm11
movdqa 0x988(%rip),%xmm12
movdqa 0x98f(%rip),%xmm13
movdqa 0x996(%rip),%xmm14
movdqa 0x99d(%rip),%xmm15
movdqa %xmm1,%xmm2
nopw   0x0(%rax,%rax,1)
movdqa %xmm6,%xmm0
paddd  0x914(%rip),%xmm0
pshufd $0xf5,%xmm6,%xmm7
pshufd $0xf5,%xmm1,%xmm3
pmuludq %xmm7,%xmm3
pmuludq %xmm6,%xmm1
pshufd $0xf5,%xmm2,%xmm7
pshufd $0xf5,%xmm0,%xmm4
pmuludq %xmm7,%xmm4
pmuludq %xmm2,%xmm0
movdqa %xmm6,%xmm2
paddd  %xmm9,%xmm2
movdqa %xmm6,%xmm7
paddd  %xmm10,%xmm7
pmuludq %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
pmuludq %xmm3,%xmm2
pmuludq %xmm7,%xmm0
pshufd $0xf5,%xmm7,%xmm3
pmuludq %xmm4,%xmm3
movdqa %xmm6,%xmm4
paddd  %xmm11,%xmm4
movdqa %xmm6,%xmm7
paddd  %xmm12,%xmm7
pshufd $0xf5,%xmm4,%xmm5
pmuludq %xmm2,%xmm5
pmuludq %xmm1,%xmm4
pshufd $0xf5,%xmm7,%xmm8
pmuludq %xmm3,%xmm8
pmuludq %xmm0,%xmm7
movdqa %xmm6,%xmm0
paddd  %xmm13,%xmm0
movdqa %xmm6,%xmm3
paddd  %xmm14,%xmm3
pmuludq %xmm0,%xmm4
pshufd $0xe8,%xmm4,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm5,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm1
pmuludq %xmm3,%xmm7
pshufd $0xe8,%xmm7,%xmm2
pshufd $0xf5,%xmm3,%xmm0
pmuludq %xmm8,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm2
paddd  %xmm15,%xmm6
add    $0xfffffffc,%edi
jne    1700 <main+0x5e0>
test   %esi,%esi
je     1851 <main+0x731>
movdqa 0x833(%rip),%xmm3
movdqa 0x83b(%rip),%xmm4
cs nopw 0x0(%rax,%rax,1)
nop
movdqa %xmm6,%xmm0
paddd  %xmm3,%xmm0
pshufd $0xf5,%xmm1,%xmm5
pmuludq %xmm6,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm6,%xmm7
pmuludq %xmm5,%xmm7
pshufd $0xe8,%xmm7,%xmm5
punpckldq %xmm5,%xmm1
pshufd $0xf5,%xmm2,%xmm5
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm5,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm2
paddd  %xmm4,%xmm6
add    $0xffffffff,%esi
jne    1800 <main+0x6e0>
pshufd $0xf5,%xmm1,%xmm0
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xee,%xmm2,%xmm0
pmuludq %xmm2,%xmm0
pshufd $0xaa,%xmm3,%xmm1
pmuludq %xmm3,%xmm1
pmuludq %xmm0,%xmm1
movd   %xmm1,%ebp
cmp    %edx,%ecx
je     189d <main+0x77d>
sub    %edx,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
imul   %eax,%ebp
lea    -0x1(%rax),%ecx
cmp    $0x2,%eax
mov    %ecx,%eax
ja     1890 <main+0x770>
lea    0x7fc(%rip),%rdi
xor    %ebx,%ebx
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xc(%rsp),%rsi
lea    0x7fb(%rip),%rdi
call   1040 <scanf@plt>
mov    0xc(%rsp),%eax
mov    %eax,%ecx
sub    $0x2,%ecx
jl     1b0e <main+0x9ee>
cmovb  %ebx,%ecx
add    $0x1,%ecx
mov    $0x1,%r12d
cmp    $0x8,%ecx
jb     1b00 <main+0x9e0>
mov    %ecx,%edx
and    $0xfffffff8,%edx
movd   %eax,%xmm0
pshufd $0x0,%xmm0,%xmm6
paddd  0x708(%rip),%xmm6
lea    -0x8(%rdx),%ebx
mov    %ebx,%edi
shr    $0x3,%edi
add    $0x1,%edi
mov    %edi,%esi
and    $0x3,%esi
cmp    $0x18,%ebx
jae    191e <main+0x7fe>
movdqa 0x6fb(%rip),%xmm1
movdqa %xmm1,%xmm2
jmp    1a51 <main+0x931>
and    $0xfffffffc,%edi
movdqa 0x6e7(%rip),%xmm1
movdqa 0x6fe(%rip),%xmm9
movdqa 0x705(%rip),%xmm10
movdqa 0x70c(%rip),%xmm11
movdqa 0x713(%rip),%xmm12
movdqa 0x71a(%rip),%xmm13
movdqa 0x721(%rip),%xmm14
movdqa 0x728(%rip),%xmm15
movdqa %xmm1,%xmm2
nopl   0x0(%rax)
movdqa %xmm6,%xmm0
paddd  0x6a4(%rip),%xmm0
pshufd $0xf5,%xmm6,%xmm7
pshufd $0xf5,%xmm1,%xmm3
pmuludq %xmm7,%xmm3
pmuludq %xmm6,%xmm1
pshufd $0xf5,%xmm2,%xmm7
pshufd $0xf5,%xmm0,%xmm4
pmuludq %xmm7,%xmm4
pmuludq %xmm2,%xmm0
movdqa %xmm6,%xmm2
paddd  %xmm9,%xmm2
movdqa %xmm6,%xmm7
paddd  %xmm10,%xmm7
pmuludq %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
pmuludq %xmm3,%xmm2
pmuludq %xmm7,%xmm0
pshufd $0xf5,%xmm7,%xmm3
pmuludq %xmm4,%xmm3
movdqa %xmm6,%xmm4
paddd  %xmm11,%xmm4
movdqa %xmm6,%xmm7
paddd  %xmm12,%xmm7
pshufd $0xf5,%xmm4,%xmm5
pmuludq %xmm2,%xmm5
pmuludq %xmm1,%xmm4
pshufd $0xf5,%xmm7,%xmm8
pmuludq %xmm3,%xmm8
pmuludq %xmm0,%xmm7
movdqa %xmm6,%xmm0
paddd  %xmm13,%xmm0
movdqa %xmm6,%xmm3
paddd  %xmm14,%xmm3
pmuludq %xmm0,%xmm4
pshufd $0xe8,%xmm4,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm5,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm1
pmuludq %xmm3,%xmm7
pshufd $0xe8,%xmm7,%xmm2
pshufd $0xf5,%xmm3,%xmm0
pmuludq %xmm8,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm2
paddd  %xmm15,%xmm6
add    $0xfffffffc,%edi
jne    1970 <main+0x850>
test   %esi,%esi
je     1ac1 <main+0x9a1>
movdqa 0x5c3(%rip),%xmm3
movdqa 0x5cb(%rip),%xmm4
cs nopw 0x0(%rax,%rax,1)
nop
movdqa %xmm6,%xmm0
paddd  %xmm3,%xmm0
pshufd $0xf5,%xmm1,%xmm5
pmuludq %xmm6,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm6,%xmm7
pmuludq %xmm5,%xmm7
pshufd $0xe8,%xmm7,%xmm5
punpckldq %xmm5,%xmm1
pshufd $0xf5,%xmm2,%xmm5
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm5,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm2
paddd  %xmm4,%xmm6
add    $0xffffffff,%esi
jne    1a70 <main+0x950>
pshufd $0xf5,%xmm1,%xmm0
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xee,%xmm2,%xmm0
pmuludq %xmm2,%xmm0
pshufd $0xaa,%xmm3,%xmm1
pmuludq %xmm3,%xmm1
pmuludq %xmm0,%xmm1
movd   %xmm1,%r12d
cmp    %edx,%ecx
je     1b0e <main+0x9ee>
sub    %edx,%eax
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
imul   %eax,%r12d
lea    -0x1(%rax),%ecx
cmp    $0x2,%eax
mov    %ecx,%eax
ja     1b00 <main+0x9e0>
lea    0x58b(%rip),%rdi
xor    %r13d,%r13d
xor    %eax,%eax
call   1030 <printf@plt>
lea    0x10(%rsp),%rsi
lea    0x589(%rip),%rdi
call   1040 <scanf@plt>
mov    0x10(%rsp),%eax
mov    $0x1,%ebx
mov    %eax,%ecx
sub    $0x2,%ecx
jl     1d8d <main+0xc6d>
cmovb  %r13d,%ecx
add    $0x1,%ecx
mov    $0x1,%ebx
cmp    $0x8,%ecx
jb     1d80 <main+0xc60>
mov    %ecx,%edx
and    $0xfffffff8,%edx
movd   %eax,%xmm0
pshufd $0x0,%xmm0,%xmm6
paddd  0x491(%rip),%xmm6
lea    -0x8(%rdx),%ebx
mov    %ebx,%edi
shr    $0x3,%edi
add    $0x1,%edi
mov    %edi,%esi
and    $0x3,%esi
cmp    $0x18,%ebx
jae    1b95 <main+0xa75>
movdqa 0x484(%rip),%xmm1
movdqa %xmm1,%xmm2
jmp    1cd1 <main+0xbb1>
and    $0xfffffffc,%edi
movdqa 0x470(%rip),%xmm1
movdqa 0x487(%rip),%xmm9
movdqa 0x48e(%rip),%xmm10
movdqa 0x495(%rip),%xmm11
movdqa 0x49c(%rip),%xmm12
movdqa 0x4a3(%rip),%xmm13
movdqa 0x4aa(%rip),%xmm14
movdqa 0x4b1(%rip),%xmm15
movdqa %xmm1,%xmm2
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movdqa %xmm6,%xmm0
paddd  0x424(%rip),%xmm0
pshufd $0xf5,%xmm6,%xmm7
pshufd $0xf5,%xmm1,%xmm3
pmuludq %xmm7,%xmm3
pmuludq %xmm6,%xmm1
pshufd $0xf5,%xmm2,%xmm7
pshufd $0xf5,%xmm0,%xmm4
pmuludq %xmm7,%xmm4
pmuludq %xmm2,%xmm0
movdqa %xmm6,%xmm2
paddd  %xmm9,%xmm2
movdqa %xmm6,%xmm7
paddd  %xmm10,%xmm7
pmuludq %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
pmuludq %xmm3,%xmm2
pmuludq %xmm7,%xmm0
pshufd $0xf5,%xmm7,%xmm3
pmuludq %xmm4,%xmm3
movdqa %xmm6,%xmm4
paddd  %xmm11,%xmm4
movdqa %xmm6,%xmm7
paddd  %xmm12,%xmm7
pshufd $0xf5,%xmm4,%xmm5
pmuludq %xmm2,%xmm5
pmuludq %xmm1,%xmm4
pshufd $0xf5,%xmm7,%xmm8
pmuludq %xmm3,%xmm8
pmuludq %xmm0,%xmm7
movdqa %xmm6,%xmm0
paddd  %xmm13,%xmm0
movdqa %xmm6,%xmm3
paddd  %xmm14,%xmm3
pmuludq %xmm0,%xmm4
pshufd $0xe8,%xmm4,%xmm1
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm5,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm1
pmuludq %xmm3,%xmm7
pshufd $0xe8,%xmm7,%xmm2
pshufd $0xf5,%xmm3,%xmm0
pmuludq %xmm8,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm2
paddd  %xmm15,%xmm6
add    $0xfffffffc,%edi
jne    1bf0 <main+0xad0>
test   %esi,%esi
je     1d41 <main+0xc21>
movdqa 0x343(%rip),%xmm3
movdqa 0x34b(%rip),%xmm4
cs nopw 0x0(%rax,%rax,1)
nop
movdqa %xmm6,%xmm0
paddd  %xmm3,%xmm0
pshufd $0xf5,%xmm1,%xmm5
pmuludq %xmm6,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xf5,%xmm6,%xmm7
pmuludq %xmm5,%xmm7
pshufd $0xe8,%xmm7,%xmm5
punpckldq %xmm5,%xmm1
pshufd $0xf5,%xmm2,%xmm5
pmuludq %xmm0,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xf5,%xmm0,%xmm0
pmuludq %xmm5,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm2
paddd  %xmm4,%xmm6
add    $0xffffffff,%esi
jne    1cf0 <main+0xbd0>
pshufd $0xf5,%xmm1,%xmm0
pshufd $0xf5,%xmm2,%xmm3
pmuludq %xmm0,%xmm3
pmuludq %xmm1,%xmm2
pshufd $0xee,%xmm2,%xmm0
pmuludq %xmm2,%xmm0
pshufd $0xaa,%xmm3,%xmm1
pmuludq %xmm3,%xmm1
pmuludq %xmm0,%xmm1
movd   %xmm1,%ebx
cmp    %edx,%ecx
je     1d8d <main+0xc6d>
sub    %edx,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
imul   %eax,%ebx
lea    -0x1(%rax),%ecx
cmp    $0x2,%eax
mov    %ecx,%eax
ja     1d80 <main+0xc60>
lea    0x323(%rip),%r13
mov    %r13,%rdi
mov    %r15d,%esi
xor    %eax,%eax
call   1030 <printf@plt>
mov    %r13,%rdi
mov    %r14d,%esi
xor    %eax,%eax
call   1030 <printf@plt>
mov    %r13,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <printf@plt>
mov    %r13,%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   1030 <printf@plt>
mov    %r13,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [20 x i8] c"\0A digite um valor: \00"
@.str.1 = [3 x i8] c"%d\00"
@.str.2 = [29 x i8] c"\0A O valor do vetor B e: %d \0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [5 x i32]
%3 = alloca [5 x i32]
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
store i32 0, i32* %1
store i32 0, i32* %4
br label %7
7: ; preds = %35, %0
%8 = load i32, i32* %4
%9 = icmp slt i32 %8, 5
br i1 %9, label %10, label %38
10: ; preds = %7
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0))
%12 = load i32, i32* %4
%13 = sext i32 %12 to i64
%14 = getelementptr inbounds [5 x i32], [5 x i32]* %2, i64 0, i64 %13
%15 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %14)
store i32 1, i32* %6
%16 = load i32, i32* %4
%17 = sext i32 %16 to i64
%18 = getelementptr inbounds [5 x i32], [5 x i32]* %2, i64 0, i64 %17
%19 = load i32, i32* %18
store i32 %19, i32* %5
br label %20
20: ; preds = %27, %10
%21 = load i32, i32* %5
%22 = icmp sgt i32 %21, 1
br i1 %22, label %23, label %30
23: ; preds = %20
%24 = load i32, i32* %5
%25 = load i32, i32* %6
%26 = mul nsw i32 %25, %24
store i32 %26, i32* %6
br label %27
27: ; preds = %23
%28 = load i32, i32* %5
%29 = add nsw i32 %28, -1
store i32 %29, i32* %5
br label %20
30: ; preds = %20
%31 = load i32, i32* %6
%32 = load i32, i32* %4
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds [5 x i32], [5 x i32]* %3, i64 0, i64 %33
store i32 %31, i32* %34
br label %35
35: ; preds = %30
%36 = load i32, i32* %4
%37 = add nsw i32 %36, 1
store i32 %37, i32* %4
br label %7
38: ; preds = %7
store i32 0, i32* %4
br label %39
39: ; preds = %48, %38
%40 = load i32, i32* %4
%41 = icmp slt i32 %40, 5
br i1 %41, label %42, label %51
42: ; preds = %39
%43 = load i32, i32* %4
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds [5 x i32], [5 x i32]* %3, i64 0, i64 %44
%46 = load i32, i32* %45
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %46)
br label %48
48: ; preds = %42
%49 = load i32, i32* %4
%50 = add nsw i32 %49, 1
store i32 %50, i32* %4
br label %39
51: ; preds = %39
%52 = load i32, i32* %1
ret i32 %52
}

LLVM IR (-O2):
@.str = [20 x i8] c"\0A digite um valor: \00"
@.str.1 = [3 x i8] c"%d\00"
@.str.2 = [29 x i8] c"\0A O valor do vetor B e: %d \0A\00"
define i32 @main() {
%1 = alloca [5 x i32]
%2 = bitcast [5 x i32]* %1 to i8*
%3 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0))
%4 = getelementptr inbounds [5 x i32], [5 x i32]* %1, i64 0, i64 0
%5 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %4)
%6 = load i32, i32* %4
%7 = icmp sgt i32 %6, 1
br i1 %7, label %8, label %82
8: ; preds = %0
%9 = add i32 %6, 1
%10 = call i32 @llvm.umin.i32(i32 %6, i32 2)
%11 = sub i32 %9, %10
%12 = icmp ult i32 %11, 8
br i1 %12, label %73, label %13
13: ; preds = %8
%14 = and i32 %11, -8
%15 = sub i32 %6, %14
%16 = insertelement <4 x i32> poison, i32 %6, i64 0
%17 = shufflevector <4 x i32> %16, <4 x i32> poison, <4 x i32> zeroinitializer
%18 = add <4 x i32> %17, <i32 0, i32 -1, i32 -2, i32 -3>
%19 = add i32 %14, -8
%20 = lshr exact i32 %19, 3
%21 = add nuw nsw i32 %20, 1
%22 = and i32 %21, 3
%23 = icmp ult i32 %19, 24
br i1 %23, label %49, label %24
24: ; preds = %13
%25 = and i32 %21, 1073741820
br label %26
26: ; preds = %26, %24
%27 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %24 ], [ %44, %26 ]
%28 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %24 ], [ %45, %26 ]
%29 = phi <4 x i32> [ %18, %24 ], [ %46, %26 ]
%30 = phi i32 [ 0, %24 ], [ %47, %26 ]
%31 = add <4 x i32> %29, <i32 -4, i32 -4, i32 -4, i32 -4>
%32 = mul <4 x i32> %27, %29
%33 = mul <4 x i32> %28, %31
%34 = add <4 x i32> %29, <i32 -8, i32 -8, i32 -8, i32 -8>
%35 = add <4 x i32> %29, <i32 -12, i32 -12, i32 -12, i32 -12>
%36 = mul <4 x i32> %32, %34
%37 = mul <4 x i32> %33, %35
%38 = add <4 x i32> %29, <i32 -16, i32 -16, i32 -16, i32 -16>
%39 = add <4 x i32> %29, <i32 -20, i32 -20, i32 -20, i32 -20>
%40 = mul <4 x i32> %36, %38
%41 = mul <4 x i32> %37, %39
%42 = add <4 x i32> %29, <i32 -24, i32 -24, i32 -24, i32 -24>
%43 = add <4 x i32> %29, <i32 -28, i32 -28, i32 -28, i32 -28>
%44 = mul <4 x i32> %40, %42
%45 = mul <4 x i32> %41, %43
%46 = add <4 x i32> %29, <i32 -32, i32 -32, i32 -32, i32 -32>
%47 = add i32 %30, 4
%48 = icmp eq i32 %47, %25
br i1 %48, label %49, label %26
49: ; preds = %26, %13
%50 = phi <4 x i32> [ undef, %13 ], [ %44, %26 ]
%51 = phi <4 x i32> [ undef, %13 ], [ %45, %26 ]
%52 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %13 ], [ %44, %26 ]
%53 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %13 ], [ %45, %26 ]
%54 = phi <4 x i32> [ %18, %13 ], [ %46, %26 ]
%55 = icmp eq i32 %22, 0
br i1 %55, label %67, label %56
56: ; preds = %49, %56
%57 = phi <4 x i32> [ %62, %56 ], [ %52, %49 ]
%58 = phi <4 x i32> [ %63, %56 ], [ %53, %49 ]
%59 = phi <4 x i32> [ %64, %56 ], [ %54, %49 ]
%60 = phi i32 [ %65, %56 ], [ 0, %49 ]
%61 = add <4 x i32> %59, <i32 -4, i32 -4, i32 -4, i32 -4>
%62 = mul <4 x i32> %57, %59
%63 = mul <4 x i32> %58, %61
%64 = add <4 x i32> %59, <i32 -8, i32 -8, i32 -8, i32 -8>
%65 = add i32 %60, 1
%66 = icmp eq i32 %65, %22
br i1 %66, label %67, label %56
67: ; preds = %56, %49
%68 = phi <4 x i32> [ %50, %49 ], [ %62, %56 ]
%69 = phi <4 x i32> [ %51, %49 ], [ %63, %56 ]
%70 = mul <4 x i32> %69, %68
%71 = call i32 @llvm.vector.reduce.mul.v4i32(<4 x i32> %70)
%72 = icmp eq i32 %11, %14
br i1 %72, label %82, label %73
73: ; preds = %8, %67
%74 = phi i32 [ 1, %8 ], [ %71, %67 ]
%75 = phi i32 [ %6, %8 ], [ %15, %67 ]
br label %76
76: ; preds = %73, %76
%77 = phi i32 [ %79, %76 ], [ %74, %73 ]
%78 = phi i32 [ %80, %76 ], [ %75, %73 ]
%79 = mul nsw i32 %77, %78
%80 = add nsw i32 %78, -1
%81 = icmp ugt i32 %78, 2
br i1 %81, label %76, label %82
82: ; preds = %76, %67, %0
%83 = phi i32 [ 1, %0 ], [ %71, %67 ], [ %79, %76 ]
%84 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0))
%85 = getelementptr inbounds [5 x i32], [5 x i32]* %1, i64 0, i64 1
%86 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %85)
%87 = load i32, i32* %85
%88 = icmp sgt i32 %87, 1
br i1 %88, label %89, label %163
89: ; preds = %82
%90 = add i32 %87, 1
%91 = call i32 @llvm.umin.i32(i32 %87, i32 2)
%92 = sub i32 %90, %91
%93 = icmp ult i32 %92, 8
br i1 %93, label %154, label %94
94: ; preds = %89
%95 = and i32 %92, -8
%96 = sub i32 %87, %95
%97 = insertelement <4 x i32> poison, i32 %87, i64 0
%98 = shufflevector <4 x i32> %97, <4 x i32> poison, <4 x i32> zeroinitializer
%99 = add <4 x i32> %98, <i32 0, i32 -1, i32 -2, i32 -3>
%100 = add i32 %95, -8
%101 = lshr exact i32 %100, 3
%102 = add nuw nsw i32 %101, 1
%103 = and i32 %102, 3
%104 = icmp ult i32 %100, 24
br i1 %104, label %130, label %105
105: ; preds = %94
%106 = and i32 %102, 1073741820
br label %107
107: ; preds = %107, %105
%108 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %105 ], [ %125, %107 ]
%109 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %105 ], [ %126, %107 ]
%110 = phi <4 x i32> [ %99, %105 ], [ %127, %107 ]
%111 = phi i32 [ 0, %105 ], [ %128, %107 ]
%112 = add <4 x i32> %110, <i32 -4, i32 -4, i32 -4, i32 -4>
%113 = mul <4 x i32> %108, %110
%114 = mul <4 x i32> %109, %112
%115 = add <4 x i32> %110, <i32 -8, i32 -8, i32 -8, i32 -8>
%116 = add <4 x i32> %110, <i32 -12, i32 -12, i32 -12, i32 -12>
%117 = mul <4 x i32> %113, %115
%118 = mul <4 x i32> %114, %116
%119 = add <4 x i32> %110, <i32 -16, i32 -16, i32 -16, i32 -16>
%120 = add <4 x i32> %110, <i32 -20, i32 -20, i32 -20, i32 -20>
%121 = mul <4 x i32> %117, %119
%122 = mul <4 x i32> %118, %120
%123 = add <4 x i32> %110, <i32 -24, i32 -24, i32 -24, i32 -24>
%124 = add <4 x i32> %110, <i32 -28, i32 -28, i32 -28, i32 -28>
%125 = mul <4 x i32> %121, %123
%126 = mul <4 x i32> %122, %124
%127 = add <4 x i32> %110, <i32 -32, i32 -32, i32 -32, i32 -32>
%128 = add i32 %111, 4
%129 = icmp eq i32 %128, %106
br i1 %129, label %130, label %107
130: ; preds = %107, %94
%131 = phi <4 x i32> [ undef, %94 ], [ %125, %107 ]
%132 = phi <4 x i32> [ undef, %94 ], [ %126, %107 ]
%133 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %94 ], [ %125, %107 ]
%134 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %94 ], [ %126, %107 ]
%135 = phi <4 x i32> [ %99, %94 ], [ %127, %107 ]
%136 = icmp eq i32 %103, 0
br i1 %136, label %148, label %137
137: ; preds = %130, %137
%138 = phi <4 x i32> [ %143, %137 ], [ %133, %130 ]
%139 = phi <4 x i32> [ %144, %137 ], [ %134, %130 ]
%140 = phi <4 x i32> [ %145, %137 ], [ %135, %130 ]
%141 = phi i32 [ %146, %137 ], [ 0, %130 ]
%142 = add <4 x i32> %140, <i32 -4, i32 -4, i32 -4, i32 -4>
%143 = mul <4 x i32> %138, %140
%144 = mul <4 x i32> %139, %142
%145 = add <4 x i32> %140, <i32 -8, i32 -8, i32 -8, i32 -8>
%146 = add i32 %141, 1
%147 = icmp eq i32 %146, %103
br i1 %147, label %148, label %137
148: ; preds = %137, %130
%149 = phi <4 x i32> [ %131, %130 ], [ %143, %137 ]
%150 = phi <4 x i32> [ %132, %130 ], [ %144, %137 ]
%151 = mul <4 x i32> %150, %149
%152 = call i32 @llvm.vector.reduce.mul.v4i32(<4 x i32> %151)
%153 = icmp eq i32 %92, %95
br i1 %153, label %163, label %154
154: ; preds = %89, %148
%155 = phi i32 [ 1, %89 ], [ %152, %148 ]
%156 = phi i32 [ %87, %89 ], [ %96, %148 ]
br label %157
157: ; preds = %154, %157
%158 = phi i32 [ %160, %157 ], [ %155, %154 ]
%159 = phi i32 [ %161, %157 ], [ %156, %154 ]
%160 = mul nsw i32 %158, %159
%161 = add nsw i32 %159, -1
%162 = icmp ugt i32 %159, 2
br i1 %162, label %157, label %163
163: ; preds = %157, %148, %82
%164 = phi i32 [ 1, %82 ], [ %152, %148 ], [ %160, %157 ]
%165 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0))
%166 = getelementptr inbounds [5 x i32], [5 x i32]* %1, i64 0, i64 2
%167 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %166)
%168 = load i32, i32* %166
%169 = icmp sgt i32 %168, 1
br i1 %169, label %170, label %244
170: ; preds = %163
%171 = add i32 %168, 1
%172 = call i32 @llvm.umin.i32(i32 %168, i32 2)
%173 = sub i32 %171, %172
%174 = icmp ult i32 %173, 8
br i1 %174, label %235, label %175
175: ; preds = %170
%176 = and i32 %173, -8
%177 = sub i32 %168, %176
%178 = insertelement <4 x i32> poison, i32 %168, i64 0
%179 = shufflevector <4 x i32> %178, <4 x i32> poison, <4 x i32> zeroinitializer
%180 = add <4 x i32> %179, <i32 0, i32 -1, i32 -2, i32 -3>
%181 = add i32 %176, -8
%182 = lshr exact i32 %181, 3
%183 = add nuw nsw i32 %182, 1
%184 = and i32 %183, 3
%185 = icmp ult i32 %181, 24
br i1 %185, label %211, label %186
186: ; preds = %175
%187 = and i32 %183, 1073741820
br label %188
188: ; preds = %188, %186
%189 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %186 ], [ %206, %188 ]
%190 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %186 ], [ %207, %188 ]
%191 = phi <4 x i32> [ %180, %186 ], [ %208, %188 ]
%192 = phi i32 [ 0, %186 ], [ %209, %188 ]
%193 = add <4 x i32> %191, <i32 -4, i32 -4, i32 -4, i32 -4>
%194 = mul <4 x i32> %189, %191
%195 = mul <4 x i32> %190, %193
%196 = add <4 x i32> %191, <i32 -8, i32 -8, i32 -8, i32 -8>
%197 = add <4 x i32> %191, <i32 -12, i32 -12, i32 -12, i32 -12>
%198 = mul <4 x i32> %194, %196
%199 = mul <4 x i32> %195, %197
%200 = add <4 x i32> %191, <i32 -16, i32 -16, i32 -16, i32 -16>
%201 = add <4 x i32> %191, <i32 -20, i32 -20, i32 -20, i32 -20>
%202 = mul <4 x i32> %198, %200
%203 = mul <4 x i32> %199, %201
%204 = add <4 x i32> %191, <i32 -24, i32 -24, i32 -24, i32 -24>
%205 = add <4 x i32> %191, <i32 -28, i32 -28, i32 -28, i32 -28>
%206 = mul <4 x i32> %202, %204
%207 = mul <4 x i32> %203, %205
%208 = add <4 x i32> %191, <i32 -32, i32 -32, i32 -32, i32 -32>
%209 = add i32 %192, 4
%210 = icmp eq i32 %209, %187
br i1 %210, label %211, label %188
211: ; preds = %188, %175
%212 = phi <4 x i32> [ undef, %175 ], [ %206, %188 ]
%213 = phi <4 x i32> [ undef, %175 ], [ %207, %188 ]
%214 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %175 ], [ %206, %188 ]
%215 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %175 ], [ %207, %188 ]
%216 = phi <4 x i32> [ %180, %175 ], [ %208, %188 ]
%217 = icmp eq i32 %184, 0
br i1 %217, label %229, label %218
218: ; preds = %211, %218
%219 = phi <4 x i32> [ %224, %218 ], [ %214, %211 ]
%220 = phi <4 x i32> [ %225, %218 ], [ %215, %211 ]
%221 = phi <4 x i32> [ %226, %218 ], [ %216, %211 ]
%222 = phi i32 [ %227, %218 ], [ 0, %211 ]
%223 = add <4 x i32> %221, <i32 -4, i32 -4, i32 -4, i32 -4>
%224 = mul <4 x i32> %219, %221
%225 = mul <4 x i32> %220, %223
%226 = add <4 x i32> %221, <i32 -8, i32 -8, i32 -8, i32 -8>
%227 = add i32 %222, 1
%228 = icmp eq i32 %227, %184
br i1 %228, label %229, label %218
229: ; preds = %218, %211
%230 = phi <4 x i32> [ %212, %211 ], [ %224, %218 ]
%231 = phi <4 x i32> [ %213, %211 ], [ %225, %218 ]
%232 = mul <4 x i32> %231, %230
%233 = call i32 @llvm.vector.reduce.mul.v4i32(<4 x i32> %232)
%234 = icmp eq i32 %173, %176
br i1 %234, label %244, label %235
235: ; preds = %170, %229
%236 = phi i32 [ 1, %170 ], [ %233, %229 ]
%237 = phi i32 [ %168, %170 ], [ %177, %229 ]
br label %238
238: ; preds = %235, %238
%239 = phi i32 [ %241, %238 ], [ %236, %235 ]
%240 = phi i32 [ %242, %238 ], [ %237, %235 ]
%241 = mul nsw i32 %239, %240
%242 = add nsw i32 %240, -1
%243 = icmp ugt i32 %240, 2
br i1 %243, label %238, label %244
244: ; preds = %238, %229, %163
%245 = phi i32 [ 1, %163 ], [ %233, %229 ], [ %241, %238 ]
%246 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0))
%247 = getelementptr inbounds [5 x i32], [5 x i32]* %1, i64 0, i64 3
%248 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %247)
%249 = load i32, i32* %247
%250 = icmp sgt i32 %249, 1
br i1 %250, label %251, label %325
251: ; preds = %244
%252 = add i32 %249, 1
%253 = call i32 @llvm.umin.i32(i32 %249, i32 2)
%254 = sub i32 %252, %253
%255 = icmp ult i32 %254, 8
br i1 %255, label %316, label %256
256: ; preds = %251
%257 = and i32 %254, -8
%258 = sub i32 %249, %257
%259 = insertelement <4 x i32> poison, i32 %249, i64 0
%260 = shufflevector <4 x i32> %259, <4 x i32> poison, <4 x i32> zeroinitializer
%261 = add <4 x i32> %260, <i32 0, i32 -1, i32 -2, i32 -3>
%262 = add i32 %257, -8
%263 = lshr exact i32 %262, 3
%264 = add nuw nsw i32 %263, 1
%265 = and i32 %264, 3
%266 = icmp ult i32 %262, 24
br i1 %266, label %292, label %267
267: ; preds = %256
%268 = and i32 %264, 1073741820
br label %269
269: ; preds = %269, %267
%270 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %267 ], [ %287, %269 ]
%271 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %267 ], [ %288, %269 ]
%272 = phi <4 x i32> [ %261, %267 ], [ %289, %269 ]
%273 = phi i32 [ 0, %267 ], [ %290, %269 ]
%274 = add <4 x i32> %272, <i32 -4, i32 -4, i32 -4, i32 -4>
%275 = mul <4 x i32> %270, %272
%276 = mul <4 x i32> %271, %274
%277 = add <4 x i32> %272, <i32 -8, i32 -8, i32 -8, i32 -8>
%278 = add <4 x i32> %272, <i32 -12, i32 -12, i32 -12, i32 -12>
%279 = mul <4 x i32> %275, %277
%280 = mul <4 x i32> %276, %278
%281 = add <4 x i32> %272, <i32 -16, i32 -16, i32 -16, i32 -16>
%282 = add <4 x i32> %272, <i32 -20, i32 -20, i32 -20, i32 -20>
%283 = mul <4 x i32> %279, %281
%284 = mul <4 x i32> %280, %282
%285 = add <4 x i32> %272, <i32 -24, i32 -24, i32 -24, i32 -24>
%286 = add <4 x i32> %272, <i32 -28, i32 -28, i32 -28, i32 -28>
%287 = mul <4 x i32> %283, %285
%288 = mul <4 x i32> %284, %286
%289 = add <4 x i32> %272, <i32 -32, i32 -32, i32 -32, i32 -32>
%290 = add i32 %273, 4
%291 = icmp eq i32 %290, %268
br i1 %291, label %292, label %269
292: ; preds = %269, %256
%293 = phi <4 x i32> [ undef, %256 ], [ %287, %269 ]
%294 = phi <4 x i32> [ undef, %256 ], [ %288, %269 ]
%295 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %256 ], [ %287, %269 ]
%296 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %256 ], [ %288, %269 ]
%297 = phi <4 x i32> [ %261, %256 ], [ %289, %269 ]
%298 = icmp eq i32 %265, 0
br i1 %298, label %310, label %299
299: ; preds = %292, %299
%300 = phi <4 x i32> [ %305, %299 ], [ %295, %292 ]
%301 = phi <4 x i32> [ %306, %299 ], [ %296, %292 ]
%302 = phi <4 x i32> [ %307, %299 ], [ %297, %292 ]
%303 = phi i32 [ %308, %299 ], [ 0, %292 ]
%304 = add <4 x i32> %302, <i32 -4, i32 -4, i32 -4, i32 -4>
%305 = mul <4 x i32> %300, %302
%306 = mul <4 x i32> %301, %304
%307 = add <4 x i32> %302, <i32 -8, i32 -8, i32 -8, i32 -8>
%308 = add i32 %303, 1
%309 = icmp eq i32 %308, %265
br i1 %309, label %310, label %299
310: ; preds = %299, %292
%311 = phi <4 x i32> [ %293, %292 ], [ %305, %299 ]
%312 = phi <4 x i32> [ %294, %292 ], [ %306, %299 ]
%313 = mul <4 x i32> %312, %311
%314 = call i32 @llvm.vector.reduce.mul.v4i32(<4 x i32> %313)
%315 = icmp eq i32 %254, %257
br i1 %315, label %325, label %316
316: ; preds = %251, %310
%317 = phi i32 [ 1, %251 ], [ %314, %310 ]
%318 = phi i32 [ %249, %251 ], [ %258, %310 ]
br label %319
319: ; preds = %316, %319
%320 = phi i32 [ %322, %319 ], [ %317, %316 ]
%321 = phi i32 [ %323, %319 ], [ %318, %316 ]
%322 = mul nsw i32 %320, %321
%323 = add nsw i32 %321, -1
%324 = icmp ugt i32 %321, 2
br i1 %324, label %319, label %325
325: ; preds = %319, %310, %244
%326 = phi i32 [ 1, %244 ], [ %314, %310 ], [ %322, %319 ]
%327 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0))
%328 = getelementptr inbounds [5 x i32], [5 x i32]* %1, i64 0, i64 4
%329 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %328)
%330 = load i32, i32* %328
%331 = icmp sgt i32 %330, 1
br i1 %331, label %332, label %406
332: ; preds = %325
%333 = add i32 %330, 1
%334 = call i32 @llvm.umin.i32(i32 %330, i32 2)
%335 = sub i32 %333, %334
%336 = icmp ult i32 %335, 8
br i1 %336, label %397, label %337
337: ; preds = %332
%338 = and i32 %335, -8
%339 = sub i32 %330, %338
%340 = insertelement <4 x i32> poison, i32 %330, i64 0
%341 = shufflevector <4 x i32> %340, <4 x i32> poison, <4 x i32> zeroinitializer
%342 = add <4 x i32> %341, <i32 0, i32 -1, i32 -2, i32 -3>
%343 = add i32 %338, -8
%344 = lshr exact i32 %343, 3
%345 = add nuw nsw i32 %344, 1
%346 = and i32 %345, 3
%347 = icmp ult i32 %343, 24
br i1 %347, label %373, label %348
348: ; preds = %337
%349 = and i32 %345, 1073741820
br label %350
350: ; preds = %350, %348
%351 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %348 ], [ %368, %350 ]
%352 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %348 ], [ %369, %350 ]
%353 = phi <4 x i32> [ %342, %348 ], [ %370, %350 ]
%354 = phi i32 [ 0, %348 ], [ %371, %350 ]
%355 = add <4 x i32> %353, <i32 -4, i32 -4, i32 -4, i32 -4>
%356 = mul <4 x i32> %351, %353
%357 = mul <4 x i32> %352, %355
%358 = add <4 x i32> %353, <i32 -8, i32 -8, i32 -8, i32 -8>
%359 = add <4 x i32> %353, <i32 -12, i32 -12, i32 -12, i32 -12>
%360 = mul <4 x i32> %356, %358
%361 = mul <4 x i32> %357, %359
%362 = add <4 x i32> %353, <i32 -16, i32 -16, i32 -16, i32 -16>
%363 = add <4 x i32> %353, <i32 -20, i32 -20, i32 -20, i32 -20>
%364 = mul <4 x i32> %360, %362
%365 = mul <4 x i32> %361, %363
%366 = add <4 x i32> %353, <i32 -24, i32 -24, i32 -24, i32 -24>
%367 = add <4 x i32> %353, <i32 -28, i32 -28, i32 -28, i32 -28>
%368 = mul <4 x i32> %364, %366
%369 = mul <4 x i32> %365, %367
%370 = add <4 x i32> %353, <i32 -32, i32 -32, i32 -32, i32 -32>
%371 = add i32 %354, 4
%372 = icmp eq i32 %371, %349
br i1 %372, label %373, label %350
373: ; preds = %350, %337
%374 = phi <4 x i32> [ undef, %337 ], [ %368, %350 ]
%375 = phi <4 x i32> [ undef, %337 ], [ %369, %350 ]
%376 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %337 ], [ %368, %350 ]
%377 = phi <4 x i32> [ <i32 1, i32 1, i32 1, i32 1>, %337 ], [ %369, %350 ]
%378 = phi <4 x i32> [ %342, %337 ], [ %370, %350 ]
%379 = icmp eq i32 %346, 0
br i1 %379, label %391, label %380
380: ; preds = %373, %380
%381 = phi <4 x i32> [ %386, %380 ], [ %376, %373 ]
%382 = phi <4 x i32> [ %387, %380 ], [ %377, %373 ]
%383 = phi <4 x i32> [ %388, %380 ], [ %378, %373 ]
%384 = phi i32 [ %389, %380 ], [ 0, %373 ]
%385 = add <4 x i32> %383, <i32 -4, i32 -4, i32 -4, i32 -4>
%386 = mul <4 x i32> %381, %383
%387 = mul <4 x i32> %382, %385
%388 = add <4 x i32> %383, <i32 -8, i32 -8, i32 -8, i32 -8>
%389 = add i32 %384, 1
%390 = icmp eq i32 %389, %346
br i1 %390, label %391, label %380
391: ; preds = %380, %373
%392 = phi <4 x i32> [ %374, %373 ], [ %386, %380 ]
%393 = phi <4 x i32> [ %375, %373 ], [ %387, %380 ]
%394 = mul <4 x i32> %393, %392
%395 = call i32 @llvm.vector.reduce.mul.v4i32(<4 x i32> %394)
%396 = icmp eq i32 %335, %338
br i1 %396, label %406, label %397
397: ; preds = %332, %391
%398 = phi i32 [ 1, %332 ], [ %395, %391 ]
%399 = phi i32 [ %330, %332 ], [ %339, %391 ]
br label %400
400: ; preds = %397, %400
%401 = phi i32 [ %403, %400 ], [ %398, %397 ]
%402 = phi i32 [ %404, %400 ], [ %399, %397 ]
%403 = mul nsw i32 %401, %402
%404 = add nsw i32 %402, -1
%405 = icmp ugt i32 %402, 2
br i1 %405, label %400, label %406
406: ; preds = %400, %391, %325
%407 = phi i32 [ 1, %325 ], [ %395, %391 ], [ %403, %400 ]
%408 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %83)
%409 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %164)
%410 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %245)
%411 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %326)
%412 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0), i32 %407)
ret i32 0
}