#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 *, float *);
int /*<<< orphan*/ system(char *);
int main() {
  int i, j;
  float matA[5][5], matB[5][5], matC[5][5], matD[5][5];
  printf("\n\t   Matriz A: \n");
  for (i = 0; i < 5; i++) {
    for (j = 0; j < 5; j++) {
      printf("Digite o elemento da linha %d, coluna %d: ", (i + 1), (j + 1));
      scanf("%f", &matA[i][j]);
    }
  }
  printf("\n\n\t   Matriz B: \n");
  for (i = 0; i < 5; i++) {
    for (j = 0; j < 5; j++) {
      printf("Digite o elemento da linha %d, coluna %d: ", (i + 1), (j + 1));
      scanf("%f", &matB[i][j]);
    }
  }
  for (i = 0; i < 5; i++) {
    for (j = 0; j < 5; j++) {
      matC[i][j] = (matA[i][j] + matB[i][j]);
    }
  }
  for (i = 0; i < 5; i++) {
    for (j = 0; j < 5; j++) {
      matD[i][j] = (matA[i][j] * matB[i][j]);
    }
  }
  printf("\n\n\tMatriz C ( A + B ): \n");
  for (i = 0; i < 5; i++) {
    for (j = 0; j < 5; j++) {
      if ((matC[i][j] >= 0) && matC[i][j] < 10)
        printf(" ");
      printf("  %.2f  ", matC[i][j]);
    }
    printf("\n");
  }
  printf("\n\n\tMatriz D ( A + B ): \n");
  for (i = 0; i < 5; i++) {
    for (j = 0; j < 5; j++) {
      if ((matD[i][j] >= 0) && matD[i][j] < 10)
        printf(" ");
      printf("  %.2f  ", matD[i][j]);
    }
    printf("\n");
  }
  system("pause");
  return (0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1c0,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xebb(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x5,-0x8(%rbp)
jge    11d3 <main+0xa3>
movl   $0x0,-0xc(%rbp)
cmpl   $0x5,-0xc(%rbp)
jge    11c0 <main+0x90>
mov    -0x8(%rbp),%esi
add    $0x1,%esi
mov    -0xc(%rbp),%edx
add    $0x1,%edx
lea    0xe90(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movslq -0x8(%rbp),%rax
lea    -0x70(%rbp),%rsi
imul   $0x14,%rax,%rax
add    %rax,%rsi
movslq -0xc(%rbp),%rax
shl    $0x2,%rax
add    %rax,%rsi
lea    0xe93(%rip),%rdi
call   1050 <scanf@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1168 <main+0x38>
jmp    11c5 <main+0x95>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1157 <main+0x27>
lea    0xe69(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x5,-0x8(%rbp)
jge    1267 <main+0x137>
movl   $0x0,-0xc(%rbp)
cmpl   $0x5,-0xc(%rbp)
jge    1254 <main+0x124>
mov    -0x8(%rbp),%esi
add    $0x1,%esi
mov    -0xc(%rbp),%edx
add    $0x1,%edx
lea    0xdff(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movslq -0x8(%rbp),%rax
lea    -0xe0(%rbp),%rsi
imul   $0x14,%rax,%rax
add    %rax,%rsi
movslq -0xc(%rbp),%rax
shl    $0x2,%rax
add    %rax,%rsi
lea    0xdff(%rip),%rdi
call   1050 <scanf@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    11f9 <main+0xc9>
jmp    1259 <main+0x129>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    11e8 <main+0xb8>
movl   $0x0,-0x8(%rbp)
cmpl   $0x5,-0x8(%rbp)
jge    12f8 <main+0x1c8>
movl   $0x0,-0xc(%rbp)
cmpl   $0x5,-0xc(%rbp)
jge    12e5 <main+0x1b5>
movslq -0x8(%rbp),%rcx
lea    -0x70(%rbp),%rax
imul   $0x14,%rcx,%rcx
add    %rcx,%rax
movslq -0xc(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movslq -0x8(%rbp),%rcx
lea    -0xe0(%rbp),%rax
imul   $0x14,%rcx,%rcx
add    %rcx,%rax
movslq -0xc(%rbp),%rcx
addss  (%rax,%rcx,4),%xmm0
movslq -0x8(%rbp),%rcx
lea    -0x150(%rbp),%rax
imul   $0x14,%rcx,%rcx
add    %rcx,%rax
movslq -0xc(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    127f <main+0x14f>
jmp    12ea <main+0x1ba>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    126e <main+0x13e>
movl   $0x0,-0x8(%rbp)
cmpl   $0x5,-0x8(%rbp)
jge    1389 <main+0x259>
movl   $0x0,-0xc(%rbp)
cmpl   $0x5,-0xc(%rbp)
jge    1376 <main+0x246>
movslq -0x8(%rbp),%rcx
lea    -0x70(%rbp),%rax
imul   $0x14,%rcx,%rcx
add    %rcx,%rax
movslq -0xc(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
movslq -0x8(%rbp),%rcx
lea    -0xe0(%rbp),%rax
imul   $0x14,%rcx,%rcx
add    %rcx,%rax
movslq -0xc(%rbp),%rcx
mulss  (%rax,%rcx,4),%xmm0
movslq -0x8(%rbp),%rcx
lea    -0x1c0(%rbp),%rax
imul   $0x14,%rcx,%rcx
add    %rcx,%rax
movslq -0xc(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1310 <main+0x1e0>
jmp    137b <main+0x24b>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    12ff <main+0x1cf>
lea    0xcc5(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x5,-0x8(%rbp)
jge    146d <main+0x33d>
movl   $0x0,-0xc(%rbp)
cmpl   $0x5,-0xc(%rbp)
jge    1451 <main+0x321>
movslq -0x8(%rbp),%rcx
lea    -0x150(%rbp),%rax
imul   $0x14,%rcx,%rcx
add    %rcx,%rax
movslq -0xc(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     1416 <main+0x2e6>
movslq -0x8(%rbp),%rcx
lea    -0x150(%rbp),%rax
imul   $0x14,%rcx,%rcx
add    %rcx,%rax
movslq -0xc(%rbp),%rcx
movss  0xc02(%rip),%xmm0
ucomiss (%rax,%rcx,4),%xmm0
jbe    1416 <main+0x2e6>
lea    0xc66(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movslq -0x8(%rbp),%rcx
lea    -0x150(%rbp),%rax
imul   $0x14,%rcx,%rcx
add    %rcx,%rax
movslq -0xc(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc32(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    13af <main+0x27f>
lea    0xc14(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    139e <main+0x26e>
lea    0xc03(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x5,-0x8(%rbp)
jge    1551 <main+0x421>
movl   $0x0,-0xc(%rbp)
cmpl   $0x5,-0xc(%rbp)
jge    1535 <main+0x405>
movslq -0x8(%rbp),%rcx
lea    -0x1c0(%rbp),%rax
imul   $0x14,%rcx,%rcx
add    %rcx,%rax
movslq -0xc(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     14fa <main+0x3ca>
movslq -0x8(%rbp),%rcx
lea    -0x1c0(%rbp),%rax
imul   $0x14,%rcx,%rcx
add    %rcx,%rax
movslq -0xc(%rbp),%rcx
movss  0xb1e(%rip),%xmm0
ucomiss (%rax,%rcx,4),%xmm0
jbe    14fa <main+0x3ca>
lea    0xb82(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movslq -0x8(%rbp),%rcx
lea    -0x1c0(%rbp),%rax
imul   $0x14,%rcx,%rcx
add    %rcx,%rax
movslq -0xc(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xb4e(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1493 <main+0x363>
lea    0xb30(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1482 <main+0x352>
lea    0xb38(%rip),%rdi
call   1030 <system@plt>
xor    %eax,%eax
add    $0x1c0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %rbx
sub    $0x1c8,%rsp
lea    0xee1(%rip),%rdi
call   1040 <puts@plt>
mov    $0x1,%ebp
lea    0xe93(%rip),%r14
lea    0xeb7(%rip),%r15
xor    %ebx,%ebx
xchg   %ax,%ax
mov    %r14,%rdi
mov    %ebp,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <printf@plt>
lea    (%rsp,%rbx,1),%rsi
add    $0x80,%rsi
mov    %r15,%rdi
call   1070 <scanf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1060 <printf@plt>
lea    (%rsp,%rbx,1),%rsi
add    $0x84,%rsi
mov    %r15,%rdi
call   1070 <scanf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1060 <printf@plt>
lea    (%rsp,%rbx,1),%rsi
add    $0x88,%rsi
mov    %r15,%rdi
call   1070 <scanf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1060 <printf@plt>
lea    (%rsp,%rbx,1),%rsi
add    $0x8c,%rsi
mov    %r15,%rdi
call   1070 <scanf@plt>
mov    %r14,%rdi
mov    %ebp,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1060 <printf@plt>
lea    (%rsp,%rbx,1),%rsi
add    $0x90,%rsi
mov    %r15,%rdi
call   1070 <scanf@plt>
add    $0x14,%rbx
add    $0x1,%ebp
cmp    $0x64,%rbx
jne    1180 <main+0x30>
lea    0xe09(%rip),%rdi
call   1040 <puts@plt>
mov    $0x1,%ebx
lea    0xdab(%rip),%r14
lea    0xdcf(%rip),%r15
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
mov    %r14,%rdi
mov    %ebx,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1060 <printf@plt>
lea    (%rsp,%rbp,1),%rsi
add    $0x10,%rsi
mov    %r15,%rdi
call   1070 <scanf@plt>
mov    %r14,%rdi
mov    %ebx,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1060 <printf@plt>
lea    (%rsp,%rbp,1),%rsi
add    $0x14,%rsi
mov    %r15,%rdi
call   1070 <scanf@plt>
mov    %r14,%rdi
mov    %ebx,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1060 <printf@plt>
lea    (%rsp,%rbp,1),%rsi
add    $0x18,%rsi
mov    %r15,%rdi
call   1070 <scanf@plt>
mov    %r14,%rdi
mov    %ebx,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1060 <printf@plt>
lea    (%rsp,%rbp,1),%rsi
add    $0x1c,%rsi
mov    %r15,%rdi
call   1070 <scanf@plt>
mov    %r14,%rdi
mov    %ebx,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1060 <printf@plt>
lea    (%rsp,%rbp,1),%rsi
add    $0x20,%rsi
mov    %r15,%rdi
call   1070 <scanf@plt>
add    $0x14,%rbp
add    $0x1,%ebx
cmp    $0x64,%rbp
jne    1270 <main+0x120>
movaps 0x80(%rsp),%xmm0
addps  0x10(%rsp),%xmm0
movaps %xmm0,0x160(%rsp)
movss  0x90(%rsp),%xmm0
addss  0x20(%rsp),%xmm0
movss  %xmm0,0x170(%rsp)
movups 0x94(%rsp),%xmm0
movups 0x24(%rsp),%xmm1
addps  %xmm0,%xmm1
movups 0x38(%rsp),%xmm0
movups %xmm1,0x174(%rsp)
movss  0xa4(%rsp),%xmm1
addss  0x34(%rsp),%xmm1
movss  %xmm1,0x184(%rsp)
movups 0xa8(%rsp),%xmm1
addps  %xmm0,%xmm1
movups %xmm1,0x188(%rsp)
movss  0xb8(%rsp),%xmm0
addss  0x48(%rsp),%xmm0
movss  %xmm0,0x198(%rsp)
movups 0xbc(%rsp),%xmm0
movups 0x4c(%rsp),%xmm1
addps  %xmm0,%xmm1
movups %xmm1,0x19c(%rsp)
movss  0xcc(%rsp),%xmm0
addss  0x5c(%rsp),%xmm0
movss  %xmm0,0x1ac(%rsp)
movaps 0xd0(%rsp),%xmm0
addps  0x60(%rsp),%xmm0
movaps %xmm0,0x1b0(%rsp)
movss  0xe0(%rsp),%xmm0
addss  0x70(%rsp),%xmm0
movss  %xmm0,0x1c0(%rsp)
movaps 0x80(%rsp),%xmm0
mulps  0x10(%rsp),%xmm0
movaps %xmm0,0xf0(%rsp)
movss  0x90(%rsp),%xmm0
mulss  0x20(%rsp),%xmm0
movss  %xmm0,0x100(%rsp)
movups 0x94(%rsp),%xmm0
movups 0x24(%rsp),%xmm1
mulps  %xmm0,%xmm1
movups %xmm1,0x104(%rsp)
movss  0xa4(%rsp),%xmm0
mulss  0x34(%rsp),%xmm0
movss  %xmm0,0x114(%rsp)
movups 0xa8(%rsp),%xmm0
movups 0x38(%rsp),%xmm1
mulps  %xmm0,%xmm1
movups %xmm1,0x118(%rsp)
movss  0xb8(%rsp),%xmm0
mulss  0x48(%rsp),%xmm0
movss  %xmm0,0x128(%rsp)
movups 0xbc(%rsp),%xmm0
movups 0x4c(%rsp),%xmm1
mulps  %xmm0,%xmm1
movups %xmm1,0x12c(%rsp)
movss  0xcc(%rsp),%xmm0
mulss  0x5c(%rsp),%xmm0
movss  %xmm0,0x13c(%rsp)
movaps 0xd0(%rsp),%xmm0
mulps  0x60(%rsp),%xmm0
movaps %xmm0,0x140(%rsp)
movss  0xe0(%rsp),%xmm0
mulss  0x70(%rsp),%xmm0
movss  %xmm0,0x150(%rsp)
lea    0xb65(%rip),%rdi
call   1040 <puts@plt>
mov    $0x10,%ebx
lea    0xb24(%rip),%r14
jmp    1549 <main+0x3f9>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
mov    %r14,%rdi
mov    $0x1,%al
call   1060 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x14,%rbx
cmp    $0x74,%rbx
je     16a3 <main+0x553>
movss  0x150(%rsp,%rbx,1),%xmm1
ucomiss 0xaab(%rip),%xmm1
jb     157e <main+0x42e>
movss  0xa9d(%rip),%xmm0
ucomiss %xmm1,%xmm0
jbe    157e <main+0x42e>
mov    $0x20,%edi
movss  %xmm1,0xc(%rsp)
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
mov    %r14,%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movss  0x154(%rsp,%rbx,1),%xmm1
ucomiss 0xa65(%rip),%xmm1
jb     15c4 <main+0x474>
movss  0xa57(%rip),%xmm0
ucomiss %xmm1,%xmm0
jbe    15c4 <main+0x474>
mov    $0x20,%edi
movss  %xmm1,0xc(%rsp)
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
mov    %r14,%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movss  0x158(%rsp,%rbx,1),%xmm1
ucomiss 0xa1f(%rip),%xmm1
jb     160a <main+0x4ba>
movss  0xa11(%rip),%xmm0
ucomiss %xmm1,%xmm0
jbe    160a <main+0x4ba>
mov    $0x20,%edi
movss  %xmm1,0xc(%rsp)
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
mov    %r14,%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movss  0x15c(%rsp,%rbx,1),%xmm1
ucomiss 0x9d9(%rip),%xmm1
jb     1650 <main+0x500>
movss  0x9cb(%rip),%xmm0
ucomiss %xmm1,%xmm0
jbe    1650 <main+0x500>
mov    $0x20,%edi
movss  %xmm1,0xc(%rsp)
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
mov    %r14,%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movss  0x160(%rsp,%rbx,1),%xmm1
ucomiss 0x993(%rip),%xmm1
jb     1520 <main+0x3d0>
movss  0x981(%rip),%xmm0
ucomiss %xmm1,%xmm0
jbe    1520 <main+0x3d0>
mov    $0x20,%edi
movss  %xmm1,0xc(%rsp)
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm1
jmp    1520 <main+0x3d0>
lea    0x9d4(%rip),%rdi
call   1040 <puts@plt>
mov    $0x10,%ebx
lea    0x97b(%rip),%r14
jmp    16e9 <main+0x599>
nopl   (%rax)
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
mov    %r14,%rdi
mov    $0x1,%al
call   1060 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x14,%rbx
cmp    $0x74,%rbx
je     1843 <main+0x6f3>
movss  0xe0(%rsp,%rbx,1),%xmm1
ucomiss 0x90b(%rip),%xmm1
jb     171e <main+0x5ce>
movss  0x8fd(%rip),%xmm0
ucomiss %xmm1,%xmm0
jbe    171e <main+0x5ce>
mov    $0x20,%edi
movss  %xmm1,0xc(%rsp)
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
mov    %r14,%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movss  0xe4(%rsp,%rbx,1),%xmm1
ucomiss 0x8c5(%rip),%xmm1
jb     1764 <main+0x614>
movss  0x8b7(%rip),%xmm0
ucomiss %xmm1,%xmm0
jbe    1764 <main+0x614>
mov    $0x20,%edi
movss  %xmm1,0xc(%rsp)
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
mov    %r14,%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movss  0xe8(%rsp,%rbx,1),%xmm1
ucomiss 0x87f(%rip),%xmm1
jb     17aa <main+0x65a>
movss  0x871(%rip),%xmm0
ucomiss %xmm1,%xmm0
jbe    17aa <main+0x65a>
mov    $0x20,%edi
movss  %xmm1,0xc(%rsp)
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
mov    %r14,%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movss  0xec(%rsp,%rbx,1),%xmm1
ucomiss 0x839(%rip),%xmm1
jb     17f0 <main+0x6a0>
movss  0x82b(%rip),%xmm0
ucomiss %xmm1,%xmm0
jbe    17f0 <main+0x6a0>
mov    $0x20,%edi
movss  %xmm1,0xc(%rsp)
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
mov    %r14,%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movss  0xf0(%rsp,%rbx,1),%xmm1
ucomiss 0x7f3(%rip),%xmm1
jb     16c0 <main+0x570>
movss  0x7e1(%rip),%xmm0
ucomiss %xmm1,%xmm0
jbe    16c0 <main+0x570>
mov    $0x20,%edi
movss  %xmm1,0xc(%rsp)
call   1030 <putchar@plt>
movss  0xc(%rsp),%xmm1
jmp    16c0 <main+0x570>
lea    0x7f5(%rip),%rdi
call   1050 <system@plt>
xor    %eax,%eax
add    $0x1c8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [17 x i8] c"\0A\09 Matriz A: \0A\00"
@.str.1 = [43 x i8] c"Digite o elemento da linha %d, coluna %d: \00"
@.str.2 = [3 x i8] c"%f\00"
@.str.3 = [18 x i8] c"\0A\0A\09 Matriz B: \0A\00"
@.str.4 = [25 x i8] c"\0A\0A\09Matriz C ( A + B ): \0A\00"
@.str.5 = [2 x i8] c" \00"
@.str.6 = [9 x i8] c" %.2f \00"
@.str.7 = [2 x i8] c"\0A\00"
@.str.8 = [25 x i8] c"\0A\0A\09Matriz D ( A + B ): \0A\00"
@.str.9 = [6 x i8] c"pause\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca [5 x [5 x float]]
%5 = alloca [5 x [5 x float]]
%6 = alloca [5 x [5 x float]]
%7 = alloca [5 x [5 x float]]
store i32 0, i32* %1
%8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str, i64 0, i64 0))
store i32 0, i32* %2
br label %9
9: ; preds = %33, %0
%10 = load i32, i32* %2
%11 = icmp slt i32 %10, 5
br i1 %11, label %12, label %36
12: ; preds = %9
store i32 0, i32* %3
br label %13
13: ; preds = %29, %12
%14 = load i32, i32* %3
%15 = icmp slt i32 %14, 5
br i1 %15, label %16, label %32
16: ; preds = %13
%17 = load i32, i32* %2
%18 = add nsw i32 %17, 1
%19 = load i32, i32* %3
%20 = add nsw i32 %19, 1
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0), i32 %18, i32 %20)
%22 = load i32, i32* %2
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 %23
%25 = load i32, i32* %3
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds [5 x float], [5 x float]* %24, i64 0, i64 %26
%28 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %27)
br label %29
29: ; preds = %16
%30 = load i32, i32* %3
%31 = add nsw i32 %30, 1
store i32 %31, i32* %3
br label %13
32: ; preds = %13
br label %33
33: ; preds = %32
%34 = load i32, i32* %2
%35 = add nsw i32 %34, 1
store i32 %35, i32* %2
br label %9
36: ; preds = %9
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0))
store i32 0, i32* %2
br label %38
38: ; preds = %62, %36
%39 = load i32, i32* %2
%40 = icmp slt i32 %39, 5
br i1 %40, label %41, label %65
41: ; preds = %38
store i32 0, i32* %3
br label %42
42: ; preds = %58, %41
%43 = load i32, i32* %3
%44 = icmp slt i32 %43, 5
br i1 %44, label %45, label %61
45: ; preds = %42
%46 = load i32, i32* %2
%47 = add nsw i32 %46, 1
%48 = load i32, i32* %3
%49 = add nsw i32 %48, 1
%50 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0), i32 %47, i32 %49)
%51 = load i32, i32* %2
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %5, i64 0, i64 %52
%54 = load i32, i32* %3
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds [5 x float], [5 x float]* %53, i64 0, i64 %55
%57 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %56)
br label %58
58: ; preds = %45
%59 = load i32, i32* %3
%60 = add nsw i32 %59, 1
store i32 %60, i32* %3
br label %42
61: ; preds = %42
br label %62
62: ; preds = %61
%63 = load i32, i32* %2
%64 = add nsw i32 %63, 1
store i32 %64, i32* %2
br label %38
65: ; preds = %38
store i32 0, i32* %2
br label %66
66: ; preds = %99, %65
%67 = load i32, i32* %2
%68 = icmp slt i32 %67, 5
br i1 %68, label %69, label %102
69: ; preds = %66
store i32 0, i32* %3
br label %70
70: ; preds = %95, %69
%71 = load i32, i32* %3
%72 = icmp slt i32 %71, 5
br i1 %72, label %73, label %98
73: ; preds = %70
%74 = load i32, i32* %2
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 %75
%77 = load i32, i32* %3
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds [5 x float], [5 x float]* %76, i64 0, i64 %78
%80 = load float, float* %79
%81 = load i32, i32* %2
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %5, i64 0, i64 %82
%84 = load i32, i32* %3
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds [5 x float], [5 x float]* %83, i64 0, i64 %85
%87 = load float, float* %86
%88 = fadd float %80, %87
%89 = load i32, i32* %2
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %6, i64 0, i64 %90
%92 = load i32, i32* %3
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds [5 x float], [5 x float]* %91, i64 0, i64 %93
store float %88, float* %94
br label %95
95: ; preds = %73
%96 = load i32, i32* %3
%97 = add nsw i32 %96, 1
store i32 %97, i32* %3
br label %70
98: ; preds = %70
br label %99
99: ; preds = %98
%100 = load i32, i32* %2
%101 = add nsw i32 %100, 1
store i32 %101, i32* %2
br label %66
102: ; preds = %66
store i32 0, i32* %2
br label %103
103: ; preds = %136, %102
%104 = load i32, i32* %2
%105 = icmp slt i32 %104, 5
br i1 %105, label %106, label %139
106: ; preds = %103
store i32 0, i32* %3
br label %107
107: ; preds = %132, %106
%108 = load i32, i32* %3
%109 = icmp slt i32 %108, 5
br i1 %109, label %110, label %135
110: ; preds = %107
%111 = load i32, i32* %2
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 %112
%114 = load i32, i32* %3
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds [5 x float], [5 x float]* %113, i64 0, i64 %115
%117 = load float, float* %116
%118 = load i32, i32* %2
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %5, i64 0, i64 %119
%121 = load i32, i32* %3
%122 = sext i32 %121 to i64
%123 = getelementptr inbounds [5 x float], [5 x float]* %120, i64 0, i64 %122
%124 = load float, float* %123
%125 = fmul float %117, %124
%126 = load i32, i32* %2
%127 = sext i32 %126 to i64
%128 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %7, i64 0, i64 %127
%129 = load i32, i32* %3
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds [5 x float], [5 x float]* %128, i64 0, i64 %130
store float %125, float* %131
br label %132
132: ; preds = %110
%133 = load i32, i32* %3
%134 = add nsw i32 %133, 1
store i32 %134, i32* %3
br label %107
135: ; preds = %107
br label %136
136: ; preds = %135
%137 = load i32, i32* %2
%138 = add nsw i32 %137, 1
store i32 %138, i32* %2
br label %103
139: ; preds = %103
%140 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.4, i64 0, i64 0))
store i32 0, i32* %2
br label %141
141: ; preds = %183, %139
%142 = load i32, i32* %2
%143 = icmp slt i32 %142, 5
br i1 %143, label %144, label %186
144: ; preds = %141
store i32 0, i32* %3
br label %145
145: ; preds = %178, %144
%146 = load i32, i32* %3
%147 = icmp slt i32 %146, 5
br i1 %147, label %148, label %181
148: ; preds = %145
%149 = load i32, i32* %2
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %6, i64 0, i64 %150
%152 = load i32, i32* %3
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds [5 x float], [5 x float]* %151, i64 0, i64 %153
%155 = load float, float* %154
%156 = fcmp oge float %155, 0.000000e+00
br i1 %156, label %157, label %168
157: ; preds = %148
%158 = load i32, i32* %2
%159 = sext i32 %158 to i64
%160 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %6, i64 0, i64 %159
%161 = load i32, i32* %3
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds [5 x float], [5 x float]* %160, i64 0, i64 %162
%164 = load float, float* %163
%165 = fcmp olt float %164, 1.000000e+01
br i1 %165, label %166, label %168
166: ; preds = %157
%167 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
br label %168
168: ; preds = %166, %157, %148
%169 = load i32, i32* %2
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %6, i64 0, i64 %170
%172 = load i32, i32* %3
%173 = sext i32 %172 to i64
%174 = getelementptr inbounds [5 x float], [5 x float]* %171, i64 0, i64 %173
%175 = load float, float* %174
%176 = fpext float %175 to double
%177 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0), double %176)
br label %178
178: ; preds = %168
%179 = load i32, i32* %3
%180 = add nsw i32 %179, 1
store i32 %180, i32* %3
br label %145
181: ; preds = %145
%182 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0))
br label %183
183: ; preds = %181
%184 = load i32, i32* %2
%185 = add nsw i32 %184, 1
store i32 %185, i32* %2
br label %141
186: ; preds = %141
%187 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.8, i64 0, i64 0))
store i32 0, i32* %2
br label %188
188: ; preds = %230, %186
%189 = load i32, i32* %2
%190 = icmp slt i32 %189, 5
br i1 %190, label %191, label %233
191: ; preds = %188
store i32 0, i32* %3
br label %192
192: ; preds = %225, %191
%193 = load i32, i32* %3
%194 = icmp slt i32 %193, 5
br i1 %194, label %195, label %228
195: ; preds = %192
%196 = load i32, i32* %2
%197 = sext i32 %196 to i64
%198 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %7, i64 0, i64 %197
%199 = load i32, i32* %3
%200 = sext i32 %199 to i64
%201 = getelementptr inbounds [5 x float], [5 x float]* %198, i64 0, i64 %200
%202 = load float, float* %201
%203 = fcmp oge float %202, 0.000000e+00
br i1 %203, label %204, label %215
204: ; preds = %195
%205 = load i32, i32* %2
%206 = sext i32 %205 to i64
%207 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %7, i64 0, i64 %206
%208 = load i32, i32* %3
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds [5 x float], [5 x float]* %207, i64 0, i64 %209
%211 = load float, float* %210
%212 = fcmp olt float %211, 1.000000e+01
br i1 %212, label %213, label %215
213: ; preds = %204
%214 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
br label %215
215: ; preds = %213, %204, %195
%216 = load i32, i32* %2
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %7, i64 0, i64 %217
%219 = load i32, i32* %3
%220 = sext i32 %219 to i64
%221 = getelementptr inbounds [5 x float], [5 x float]* %218, i64 0, i64 %220
%222 = load float, float* %221
%223 = fpext float %222 to double
%224 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0), double %223)
br label %225
225: ; preds = %215
%226 = load i32, i32* %3
%227 = add nsw i32 %226, 1
store i32 %227, i32* %3
br label %192
228: ; preds = %192
%229 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0))
br label %230
230: ; preds = %228
%231 = load i32, i32* %2
%232 = add nsw i32 %231, 1
store i32 %232, i32* %2
br label %188
233: ; preds = %188
%234 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0))
ret i32 0
}

LLVM IR (-O2):
@.str.1 = [43 x i8] c"Digite o elemento da linha %d, coluna %d: \00"
@.str.2 = [3 x i8] c"%f\00"
@.str.6 = [9 x i8] c" %.2f \00"
@.str.9 = [6 x i8] c"pause\00"
@str = [16 x i8] c"\0A\09 Matriz A: \00"
@str.10 = [17 x i8] c"\0A\0A\09 Matriz B: \00"
@str.11 = [24 x i8] c"\0A\0A\09Matriz C ( A + B ): \00"
@str.12 = [24 x i8] c"\0A\0A\09Matriz D ( A + B ): \00"
define i32 @main() {
%1 = alloca [5 x [5 x float]]
%2 = alloca [5 x [5 x float]]
%3 = alloca [5 x [5 x float]]
%4 = alloca [5 x [5 x float]]
%5 = bitcast [5 x [5 x float]]* %1 to i8*
%6 = bitcast [5 x [5 x float]]* %2 to i8*
%7 = bitcast [5 x [5 x float]]* %3 to i8*
%8 = bitcast [5 x [5 x float]]* %4 to i8*
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str, i64 0, i64 0))
br label %10
10: ; preds = %0, %10
%11 = phi i64 [ 0, %0 ], [ %12, %10 ]
%12 = add nuw nsw i64 %11, 1
%13 = trunc i64 %12 to i32
%14 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0), i32 %13, i32 1)
%15 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 %11, i64 0
%16 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %15)
%17 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0), i32 %13, i32 2)
%18 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 %11, i64 1
%19 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %18)
%20 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0), i32 %13, i32 3)
%21 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 %11, i64 2
%22 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %21)
%23 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0), i32 %13, i32 4)
%24 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 %11, i64 3
%25 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %24)
%26 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0), i32 %13, i32 5)
%27 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 %11, i64 4
%28 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %27)
%29 = icmp eq i64 %12, 5
br i1 %29, label %30, label %10
30: ; preds = %10
%31 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @str.10, i64 0, i64 0))
br label %32
32: ; preds = %30, %32
%33 = phi i64 [ 0, %30 ], [ %34, %32 ]
%34 = add nuw nsw i64 %33, 1
%35 = trunc i64 %34 to i32
%36 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0), i32 %35, i32 1)
%37 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 %33, i64 0
%38 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %37)
%39 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0), i32 %35, i32 2)
%40 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 %33, i64 1
%41 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %40)
%42 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0), i32 %35, i32 3)
%43 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 %33, i64 2
%44 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %43)
%45 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0), i32 %35, i32 4)
%46 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 %33, i64 3
%47 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %46)
%48 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0), i32 %35, i32 5)
%49 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 %33, i64 4
%50 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %49)
%51 = icmp eq i64 %34, 5
br i1 %51, label %52, label %32
52: ; preds = %32
%53 = bitcast [5 x [5 x float]]* %1 to <4 x float>*
%54 = load <4 x float>, <4 x float>* %53
%55 = bitcast [5 x [5 x float]]* %2 to <4 x float>*
%56 = load <4 x float>, <4 x float>* %55
%57 = fadd <4 x float> %54, %56
%58 = bitcast [5 x [5 x float]]* %3 to <4 x float>*
store <4 x float> %57, <4 x float>* %58
%59 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 0, i64 4
%60 = load float, float* %59
%61 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 0, i64 4
%62 = load float, float* %61
%63 = fadd float %60, %62
%64 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %3, i64 0, i64 0, i64 4
store float %63, float* %64
%65 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 1, i64 0
%66 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 1, i64 0
%67 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %3, i64 0, i64 1, i64 0
%68 = bitcast float* %65 to <4 x float>*
%69 = load <4 x float>, <4 x float>* %68
%70 = bitcast float* %66 to <4 x float>*
%71 = load <4 x float>, <4 x float>* %70
%72 = fadd <4 x float> %69, %71
%73 = bitcast float* %67 to <4 x float>*
store <4 x float> %72, <4 x float>* %73
%74 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 1, i64 4
%75 = load float, float* %74
%76 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 1, i64 4
%77 = load float, float* %76
%78 = fadd float %75, %77
%79 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %3, i64 0, i64 1, i64 4
store float %78, float* %79
%80 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 2, i64 0
%81 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 2, i64 0
%82 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %3, i64 0, i64 2, i64 0
%83 = bitcast float* %80 to <4 x float>*
%84 = load <4 x float>, <4 x float>* %83
%85 = bitcast float* %81 to <4 x float>*
%86 = load <4 x float>, <4 x float>* %85
%87 = fadd <4 x float> %84, %86
%88 = bitcast float* %82 to <4 x float>*
store <4 x float> %87, <4 x float>* %88
%89 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 2, i64 4
%90 = load float, float* %89
%91 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 2, i64 4
%92 = load float, float* %91
%93 = fadd float %90, %92
%94 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %3, i64 0, i64 2, i64 4
store float %93, float* %94
%95 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 3, i64 0
%96 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 3, i64 0
%97 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %3, i64 0, i64 3, i64 0
%98 = bitcast float* %95 to <4 x float>*
%99 = load <4 x float>, <4 x float>* %98
%100 = bitcast float* %96 to <4 x float>*
%101 = load <4 x float>, <4 x float>* %100
%102 = fadd <4 x float> %99, %101
%103 = bitcast float* %97 to <4 x float>*
store <4 x float> %102, <4 x float>* %103
%104 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 3, i64 4
%105 = load float, float* %104
%106 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 3, i64 4
%107 = load float, float* %106
%108 = fadd float %105, %107
%109 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %3, i64 0, i64 3, i64 4
store float %108, float* %109
%110 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 4, i64 0
%111 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 4, i64 0
%112 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %3, i64 0, i64 4, i64 0
%113 = bitcast float* %110 to <4 x float>*
%114 = load <4 x float>, <4 x float>* %113
%115 = bitcast float* %111 to <4 x float>*
%116 = load <4 x float>, <4 x float>* %115
%117 = fadd <4 x float> %114, %116
%118 = bitcast float* %112 to <4 x float>*
store <4 x float> %117, <4 x float>* %118
%119 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 4, i64 4
%120 = load float, float* %119
%121 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 4, i64 4
%122 = load float, float* %121
%123 = fadd float %120, %122
%124 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %3, i64 0, i64 4, i64 4
store float %123, float* %124
%125 = bitcast [5 x [5 x float]]* %1 to <4 x float>*
%126 = load <4 x float>, <4 x float>* %125
%127 = bitcast [5 x [5 x float]]* %2 to <4 x float>*
%128 = load <4 x float>, <4 x float>* %127
%129 = fmul <4 x float> %126, %128
%130 = bitcast [5 x [5 x float]]* %4 to <4 x float>*
store <4 x float> %129, <4 x float>* %130
%131 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 0, i64 4
%132 = load float, float* %131
%133 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 0, i64 4
%134 = load float, float* %133
%135 = fmul float %132, %134
%136 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 0, i64 4
store float %135, float* %136
%137 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 1, i64 0
%138 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 1, i64 0
%139 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 1, i64 0
%140 = bitcast float* %137 to <4 x float>*
%141 = load <4 x float>, <4 x float>* %140
%142 = bitcast float* %138 to <4 x float>*
%143 = load <4 x float>, <4 x float>* %142
%144 = fmul <4 x float> %141, %143
%145 = bitcast float* %139 to <4 x float>*
store <4 x float> %144, <4 x float>* %145
%146 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 1, i64 4
%147 = load float, float* %146
%148 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 1, i64 4
%149 = load float, float* %148
%150 = fmul float %147, %149
%151 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 1, i64 4
store float %150, float* %151
%152 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 2, i64 0
%153 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 2, i64 0
%154 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 2, i64 0
%155 = bitcast float* %152 to <4 x float>*
%156 = load <4 x float>, <4 x float>* %155
%157 = bitcast float* %153 to <4 x float>*
%158 = load <4 x float>, <4 x float>* %157
%159 = fmul <4 x float> %156, %158
%160 = bitcast float* %154 to <4 x float>*
store <4 x float> %159, <4 x float>* %160
%161 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 2, i64 4
%162 = load float, float* %161
%163 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 2, i64 4
%164 = load float, float* %163
%165 = fmul float %162, %164
%166 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 2, i64 4
store float %165, float* %166
%167 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 3, i64 0
%168 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 3, i64 0
%169 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 3, i64 0
%170 = bitcast float* %167 to <4 x float>*
%171 = load <4 x float>, <4 x float>* %170
%172 = bitcast float* %168 to <4 x float>*
%173 = load <4 x float>, <4 x float>* %172
%174 = fmul <4 x float> %171, %173
%175 = bitcast float* %169 to <4 x float>*
store <4 x float> %174, <4 x float>* %175
%176 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 3, i64 4
%177 = load float, float* %176
%178 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 3, i64 4
%179 = load float, float* %178
%180 = fmul float %177, %179
%181 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 3, i64 4
store float %180, float* %181
%182 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 4, i64 0
%183 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 4, i64 0
%184 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 4, i64 0
%185 = bitcast float* %182 to <4 x float>*
%186 = load <4 x float>, <4 x float>* %185
%187 = bitcast float* %183 to <4 x float>*
%188 = load <4 x float>, <4 x float>* %187
%189 = fmul <4 x float> %186, %188
%190 = bitcast float* %184 to <4 x float>*
store <4 x float> %189, <4 x float>* %190
%191 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %1, i64 0, i64 4, i64 4
%192 = load float, float* %191
%193 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %2, i64 0, i64 4, i64 4
%194 = load float, float* %193
%195 = fmul float %192, %194
%196 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 4, i64 4
store float %195, float* %196
%197 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.11, i64 0, i64 0))
br label %198
198: ; preds = %52, %247
%199 = phi i64 [ 0, %52 ], [ %251, %247 ]
%200 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %3, i64 0, i64 %199, i64 0
%201 = load float, float* %200
%202 = fcmp oge float %201, 0.000000e+00
%203 = fcmp olt float %201, 1.000000e+01
%204 = and i1 %202, %203
br i1 %204, label %205, label %207
205: ; preds = %198
%206 = call i32 @putchar(i32 32)
br label %207
207: ; preds = %205, %198
%208 = fpext float %201 to double
%209 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0), double %208)
%210 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %3, i64 0, i64 %199, i64 1
%211 = load float, float* %210
%212 = fcmp oge float %211, 0.000000e+00
%213 = fcmp olt float %211, 1.000000e+01
%214 = and i1 %212, %213
br i1 %214, label %215, label %217
215: ; preds = %207
%216 = call i32 @putchar(i32 32)
br label %217
217: ; preds = %215, %207
%218 = fpext float %211 to double
%219 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0), double %218)
%220 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %3, i64 0, i64 %199, i64 2
%221 = load float, float* %220
%222 = fcmp oge float %221, 0.000000e+00
%223 = fcmp olt float %221, 1.000000e+01
%224 = and i1 %222, %223
br i1 %224, label %225, label %227
225: ; preds = %217
%226 = call i32 @putchar(i32 32)
br label %227
227: ; preds = %225, %217
%228 = fpext float %221 to double
%229 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0), double %228)
%230 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %3, i64 0, i64 %199, i64 3
%231 = load float, float* %230
%232 = fcmp oge float %231, 0.000000e+00
%233 = fcmp olt float %231, 1.000000e+01
%234 = and i1 %232, %233
br i1 %234, label %235, label %237
235: ; preds = %227
%236 = call i32 @putchar(i32 32)
br label %237
237: ; preds = %235, %227
%238 = fpext float %231 to double
%239 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0), double %238)
%240 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %3, i64 0, i64 %199, i64 4
%241 = load float, float* %240
%242 = fcmp oge float %241, 0.000000e+00
%243 = fcmp olt float %241, 1.000000e+01
%244 = and i1 %242, %243
br i1 %244, label %245, label %247
245: ; preds = %237
%246 = call i32 @putchar(i32 32)
br label %247
247: ; preds = %245, %237
%248 = fpext float %241 to double
%249 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0), double %248)
%250 = call i32 @putchar(i32 10)
%251 = add nuw nsw i64 %199, 1
%252 = icmp eq i64 %251, 5
br i1 %252, label %253, label %198
253: ; preds = %247
%254 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.12, i64 0, i64 0))
br label %255
255: ; preds = %253, %304
%256 = phi i64 [ 0, %253 ], [ %308, %304 ]
%257 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 %256, i64 0
%258 = load float, float* %257
%259 = fcmp oge float %258, 0.000000e+00
%260 = fcmp olt float %258, 1.000000e+01
%261 = and i1 %259, %260
br i1 %261, label %262, label %264
262: ; preds = %255
%263 = call i32 @putchar(i32 32)
br label %264
264: ; preds = %262, %255
%265 = fpext float %258 to double
%266 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0), double %265)
%267 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 %256, i64 1
%268 = load float, float* %267
%269 = fcmp oge float %268, 0.000000e+00
%270 = fcmp olt float %268, 1.000000e+01
%271 = and i1 %269, %270
br i1 %271, label %272, label %274
272: ; preds = %264
%273 = call i32 @putchar(i32 32)
br label %274
274: ; preds = %272, %264
%275 = fpext float %268 to double
%276 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0), double %275)
%277 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 %256, i64 2
%278 = load float, float* %277
%279 = fcmp oge float %278, 0.000000e+00
%280 = fcmp olt float %278, 1.000000e+01
%281 = and i1 %279, %280
br i1 %281, label %282, label %284
282: ; preds = %274
%283 = call i32 @putchar(i32 32)
br label %284
284: ; preds = %282, %274
%285 = fpext float %278 to double
%286 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0), double %285)
%287 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 %256, i64 3
%288 = load float, float* %287
%289 = fcmp oge float %288, 0.000000e+00
%290 = fcmp olt float %288, 1.000000e+01
%291 = and i1 %289, %290
br i1 %291, label %292, label %294
292: ; preds = %284
%293 = call i32 @putchar(i32 32)
br label %294
294: ; preds = %292, %284
%295 = fpext float %288 to double
%296 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0), double %295)
%297 = getelementptr inbounds [5 x [5 x float]], [5 x [5 x float]]* %4, i64 0, i64 %256, i64 4
%298 = load float, float* %297
%299 = fcmp oge float %298, 0.000000e+00
%300 = fcmp olt float %298, 1.000000e+01
%301 = and i1 %299, %300
br i1 %301, label %302, label %304
302: ; preds = %294
%303 = call i32 @putchar(i32 32)
br label %304
304: ; preds = %302, %294
%305 = fpext float %298 to double
%306 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0), double %305)
%307 = call i32 @putchar(i32 10)
%308 = add nuw nsw i64 %256, 1
%309 = icmp eq i64 %308, 5
br i1 %309, label %310, label %255
310: ; preds = %304
%311 = call i32 @system(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0))
ret i32 0
}