#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 /*<<< orphan*/ system(char *);
int main() {
  int mat1[3][8], mat2[3][8], matmais[3][8], matmenos[3][8], i, j;
  printf("\tPrimeira Matriz\n");
  for (i = 0; i < 3; i++) {
    for (j = 0; j < 8; j++) {
      printf("Digite o elemento da linha %d e coluna %d: ", (i + 1), (j + 1));
      scanf("%d", &mat1[i][j]);
    }
  }
  printf("\tSegunda Matriz\n");
  for (i = 0; i < 3; i++) {
    for (j = 0; j < 8; j++) {
      printf("Digite o elemento da linha %d e coluna %d: ", (i + 1), (j + 1));
      scanf("%d", &mat2[i][j]);
    }
  }
  for (i = 0; i < 3; i++) {
    for (j = 0; j < 8; j++) {
      matmais[i][j] = (mat1[i][j] + mat2[i][j]);
      matmenos[i][j] = (mat1[i][j] - mat2[i][j]);
    }
  }
  printf("\n\t\t\tSoma das Matrizes:\n\t");
  for (i = 0; i < 3; i++) {
    for (j = 0; j < 8; j++) {
      printf("   %d  ", matmais[i][j]);
    }
    printf("\n\n\t");
  }
  printf("\n\t\t\tSubtração das Matrizes:\n\t");
  for (i = 0; i < 3; i++) {
    for (j = 0; j < 8; j++) {
      printf("   %d  ", matmenos[i][j]);
    }
    printf("\n\n\t");
  }
  printf("\n\n");
  system("pause");
  return (0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1a0,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xeb7(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x0,-0x194(%rbp)
cmpl   $0x3,-0x194(%rbp)
jge    11f7 <main+0xc7>
movl   $0x0,-0x198(%rbp)
cmpl   $0x8,-0x198(%rbp)
jge    11de <main+0xae>
mov    -0x194(%rbp),%esi
add    $0x1,%esi
mov    -0x198(%rbp),%edx
add    $0x1,%edx
lea    0xe7b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movslq -0x194(%rbp),%rax
lea    -0x70(%rbp),%rsi
shl    $0x5,%rax
add    %rax,%rsi
movslq -0x198(%rbp),%rax
shl    $0x2,%rax
add    %rax,%rsi
lea    0xe79(%rip),%rdi
call   1050 <scanf@plt>
mov    -0x198(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x198(%rbp)
jmp    1171 <main+0x41>
jmp    11e3 <main+0xb3>
mov    -0x194(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x194(%rbp)
jmp    115a <main+0x2a>
lea    0xe43(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x0,-0x194(%rbp)
cmpl   $0x3,-0x194(%rbp)
jge    12af <main+0x17f>
movl   $0x0,-0x198(%rbp)
cmpl   $0x8,-0x198(%rbp)
jge    1296 <main+0x166>
mov    -0x194(%rbp),%esi
add    $0x1,%esi
mov    -0x198(%rbp),%edx
add    $0x1,%edx
lea    0xdc6(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movslq -0x194(%rbp),%rax
lea    -0xd0(%rbp),%rsi
shl    $0x5,%rax
add    %rax,%rsi
movslq -0x198(%rbp),%rax
shl    $0x2,%rax
add    %rax,%rsi
lea    0xdc1(%rip),%rdi
call   1050 <scanf@plt>
mov    -0x198(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x198(%rbp)
jmp    1226 <main+0xf6>
jmp    129b <main+0x16b>
mov    -0x194(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x194(%rbp)
jmp    120f <main+0xdf>
movl   $0x0,-0x194(%rbp)
cmpl   $0x3,-0x194(%rbp)
jge    13be <main+0x28e>
movl   $0x0,-0x198(%rbp)
cmpl   $0x8,-0x198(%rbp)
jge    13a5 <main+0x275>
movslq -0x194(%rbp),%rcx
lea    -0x70(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
movslq -0x198(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
movslq -0x194(%rbp),%rcx
lea    -0xd0(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
movslq -0x198(%rbp),%rcx
add    (%rax,%rcx,4),%edx
movslq -0x194(%rbp),%rcx
lea    -0x130(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
movslq -0x198(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
movslq -0x194(%rbp),%rcx
lea    -0x70(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
movslq -0x198(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
movslq -0x194(%rbp),%rcx
lea    -0xd0(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
movslq -0x198(%rbp),%rcx
sub    (%rax,%rcx,4),%edx
movslq -0x194(%rbp),%rcx
lea    -0x190(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
movslq -0x198(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x198(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x198(%rbp)
jmp    12d0 <main+0x1a0>
jmp    13aa <main+0x27a>
mov    -0x194(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x194(%rbp)
jmp    12b9 <main+0x189>
lea    0xc8d(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x0,-0x194(%rbp)
cmpl   $0x3,-0x194(%rbp)
jge    145d <main+0x32d>
movl   $0x0,-0x198(%rbp)
cmpl   $0x8,-0x198(%rbp)
jge    143b <main+0x30b>
movslq -0x194(%rbp),%rcx
lea    -0x130(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
movslq -0x198(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
lea    0xc4b(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x198(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x198(%rbp)
jmp    13ed <main+0x2bd>
lea    0xc31(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x194(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x194(%rbp)
jmp    13d6 <main+0x2a6>
lea    0xc13(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x0,-0x194(%rbp)
cmpl   $0x3,-0x194(%rbp)
jge    14fc <main+0x3cc>
movl   $0x0,-0x198(%rbp)
cmpl   $0x8,-0x198(%rbp)
jge    14da <main+0x3aa>
movslq -0x194(%rbp),%rcx
lea    -0x190(%rbp),%rax
shl    $0x5,%rcx
add    %rcx,%rax
movslq -0x198(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
lea    0xbac(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x198(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x198(%rbp)
jmp    148c <main+0x35c>
lea    0xb92(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x194(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x194(%rbp)
jmp    1475 <main+0x345>
lea    0xb94(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xb89(%rip),%rdi
call   1030 <system@plt>
xor    %eax,%eax
add    $0x1a0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
sub    $0x188,%rsp
lea    0xf29(%rip),%rdi
call   1030 <puts@plt>
lea    0xea3(%rip),%r14
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xeb4(%rip),%rbx
lea    0x120(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x124(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x128(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x12c(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x130(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x6,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x134(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x7,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x138(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x8,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x13c(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x140(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x144(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x148(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x14c(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x150(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x6,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x154(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x7,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x158(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x8,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x15c(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x160(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x164(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x168(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x16c(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x170(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x6,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x174(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x7,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x178(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x8,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x17c(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
lea    0xbc0(%rip),%rdi
call   1030 <puts@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xc0(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xc4(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xc8(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xcc(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xd0(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x6,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xd4(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x7,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xd8(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x1,%esi
mov    $0x8,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xdc(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xe0(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xe4(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xe8(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xec(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xf0(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x6,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xf4(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x7,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xf8(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x2,%esi
mov    $0x8,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xfc(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x100(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x2,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x104(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x108(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x4,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x10c(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x5,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x110(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x6,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x114(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x7,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x118(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    %r14,%rdi
mov    $0x3,%esi
mov    $0x8,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x11c(%rsp),%rsi
mov    %rbx,%rdi
call   1060 <scanf@plt>
mov    $0x1c,%eax
cs nopw 0x0(%rax,%rax,1)
nop
mov    0x104(%rsp,%rax,1),%ecx
mov    0x108(%rsp,%rax,1),%edx
mov    0xa4(%rsp,%rax,1),%esi
mov    0xa8(%rsp,%rax,1),%edi
lea    (%rsi,%rcx,1),%ebx
mov    %ebx,0x44(%rsp,%rax,1)
sub    %esi,%ecx
mov    %ecx,-0x1c(%rsp,%rax,1)
lea    (%rdi,%rdx,1),%ecx
mov    %ecx,0x48(%rsp,%rax,1)
sub    %edi,%edx
mov    %edx,-0x18(%rsp,%rax,1)
mov    0x10c(%rsp,%rax,1),%ecx
mov    0xac(%rsp,%rax,1),%edx
lea    (%rdx,%rcx,1),%esi
mov    %esi,0x4c(%rsp,%rax,1)
sub    %edx,%ecx
mov    %ecx,-0x14(%rsp,%rax,1)
mov    0x110(%rsp,%rax,1),%ecx
mov    0xb0(%rsp,%rax,1),%edx
lea    (%rdx,%rcx,1),%esi
mov    %esi,0x50(%rsp,%rax,1)
sub    %edx,%ecx
mov    %ecx,-0x10(%rsp,%rax,1)
mov    0x114(%rsp,%rax,1),%ecx
mov    0xb4(%rsp,%rax,1),%edx
lea    (%rdx,%rcx,1),%esi
mov    %esi,0x54(%rsp,%rax,1)
sub    %edx,%ecx
mov    %ecx,-0xc(%rsp,%rax,1)
mov    0x118(%rsp,%rax,1),%ecx
mov    0x11c(%rsp,%rax,1),%edx
mov    0xb8(%rsp,%rax,1),%esi
mov    0xbc(%rsp,%rax,1),%edi
lea    (%rsi,%rcx,1),%ebx
mov    %ebx,0x58(%rsp,%rax,1)
sub    %esi,%ecx
mov    %ecx,-0x8(%rsp,%rax,1)
lea    (%rdi,%rdx,1),%ecx
mov    %ecx,0x5c(%rsp,%rax,1)
sub    %edi,%edx
mov    %edx,-0x4(%rsp,%rax,1)
mov    0x120(%rsp,%rax,1),%ecx
mov    0xc0(%rsp,%rax,1),%edx
lea    (%rdx,%rcx,1),%esi
mov    %esi,0x60(%rsp,%rax,1)
sub    %edx,%ecx
mov    %ecx,(%rsp,%rax,1)
add    $0x20,%rax
cmp    $0x7c,%rax
jne    1840 <main+0x700>
lea    0x703(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x60(%rsp),%esi
lea    0x70a(%rip),%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x64(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x68(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x6c(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x70(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x74(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x78(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x7c(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x69f(%rip),%r14
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x80(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x84(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x88(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x8c(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x90(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x94(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x98(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x9c(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0xa0(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0xa4(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0xa8(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0xac(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0xb0(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0xb4(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0xb8(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0xbc(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x56e(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    (%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x4(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x8(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0xc(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x10(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x14(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x18(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x1c(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x20(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x24(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x28(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x2c(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x30(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x34(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x38(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x3c(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x40(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x44(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x48(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x4c(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x50(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x54(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x58(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x5c(%rsp),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x43a(%rip),%rdi
call   1030 <puts@plt>
lea    0x407(%rip),%rdi
call   1040 <system@plt>
xor    %eax,%eax
add    $0x188,%rsp
pop    %rbx
pop    %r14
ret

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