#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*/ COLOR_BLACK;
int /*<<< orphan*/ COLOR_BLUE;
int /*<<< orphan*/ COLOR_GREEN;
int /*<<< orphan*/ COLOR_MAGENTA;
int /*<<< orphan*/ COLOR_PAIR(int);
int /*<<< orphan*/ COLOR_RED;
int /*<<< orphan*/ COLOR_YELLOW;
int /*<<< orphan*/ addch(char);
int /*<<< orphan*/ attroff(int /*<<< orphan*/);
int /*<<< orphan*/ attron(int /*<<< orphan*/);
int /*<<< orphan*/ init_pair(int, int /*<<< orphan*/, int /*<<< orphan*/);
int /*<<< orphan*/ move(int, int);
int /*<<< orphan*/ refresh();
int /*<<< orphan*/ start_color();
void printare_piesa(int row, int col, int tip_piesa, int tip_rotatie) {
  start_color();
  init_pair(0, COLOR_YELLOW, COLOR_BLACK);
  init_pair(1, COLOR_RED, COLOR_BLACK);
  init_pair(2, COLOR_BLUE, COLOR_BLACK);
  init_pair(3, COLOR_BLUE, COLOR_BLACK);
  init_pair(4, COLOR_MAGENTA, COLOR_BLACK);
  init_pair(5, COLOR_MAGENTA, COLOR_BLACK);
  init_pair(6, COLOR_GREEN, COLOR_BLACK);
  attron(COLOR_PAIR(tip_piesa));
  if (tip_piesa == 1) {
    move(row, col);
    addch('@');
    move(row + 1, col);
    addch('@');
    move(row, col - 1);
    addch('@');
    move(row + 1, col - 1);
    addch('@');
  }
  if (tip_piesa == 2) {
    move(row, col);
    addch('@');
    if (tip_rotatie % 2 == 0) {
      move(row, col - 1);
      addch('@');
      move(row, col + 1);
      addch('@');
      move(row, col - 2);
      addch('@');
    } else {
      move(row - 1, col);
      addch('@');
      move(row + 1, col);
      addch('@');
      move(row + 2, col);
      addch('@');
    }
  }
  if (tip_piesa == 3) {
    move(row, col);
    addch('@');
    move(row, col + 1);
    addch('@');
    if (tip_rotatie % 2 == 0) {
      move(row - 1, col);
      addch('@');
      move(row + 1, col + 1);
      addch('@');
    } else {
      move(row + 1, col);
      addch('@');
      move(row + 1, col - 1);
      addch('@');
    }
  }
  if (tip_piesa == 4) {
    move(row, col);
    addch('@');
    move(row + 1, col);
    addch('@');
    if (tip_rotatie % 2 == 0) {
      move(row, col + 1);
      addch('@');
      move(row - 1, col + 1);
      addch('@');
    } else {
      move(row, col - 1);
      addch('@');
      move(row + 1, col + 1);
      addch('@');
    }
  }
  if (tip_piesa == 5) {
    move(row, col);
    addch('@');
    if (tip_rotatie % 2 == 0) {
      move(row, col - 1);
      addch('@');
      move(row, col + 1);
      addch('@');
    } else {
      move(row + 1, col);
      addch('@');
      move(row - 1, col);
      addch('@');
    }
    if (tip_rotatie % 4 == 0) {
      move(row + 1, col - 1);
      addch('@');
    } else if (tip_rotatie % 4 == 1) {
      move(row + 1, col + 1);
      addch('@');
    } else if (tip_rotatie % 4 == 2) {
      move(row - 1, col + 1);
      addch('@');
    } else if (tip_rotatie % 4 == 3) {
      move(row - 1, col - 1);
      addch('@');
    }
  }
  if (tip_piesa == 6) {
    move(row, col);
    addch('@');
    if (tip_rotatie % 2 == 0) {
      move(row, col - 1);
      addch('@');
      move(row, col + 1);
      addch('@');
    } else {
      move(row + 1, col);
      addch('@');
      move(row - 1, col);
      addch('@');
    }
    if (tip_rotatie % 4 == 0) {
      move(row + 1, col + 1);
      addch('@');
    } else if (tip_rotatie % 4 == 1) {
      move(row - 1, col + 1);
      addch('@');
    } else if (tip_rotatie % 4 == 2) {
      move(row - 1, col - 1);
      addch('@');
    } else if (tip_rotatie % 4 == 3) {
      move(row + 1, col - 1);
      addch('@');
    }
  }
  if (tip_piesa == 7) {
    move(row, col);
    addch('@');
    if (tip_rotatie % 2 == 0) {
      move(row, col - 1);
      addch('@');
      move(row, col + 1);
      addch('@');
    } else {
      move(row + 1, col);
      addch('@');
      move(row - 1, col);
      addch('@');
    }
    if (tip_rotatie % 4 == 0) {
      move(row + 1, col);
      addch('@');
    } else if (tip_rotatie % 4 == 1) {
      move(row, col + 1);
      addch('@');
    } else if (tip_rotatie % 4 == 2) {
      move(row - 1, col);
      addch('@');
    } else if (tip_rotatie % 4 == 3) {
      move(row, col - 1);
      addch('@');
    }
  }
  refresh();
  attroff(COLOR_PAIR(tip_piesa));
}


x86 assembly (clang, -O0):
<printare_piesa>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    $0x0,%al
call   1050 <start_color@plt>
mov    0x2e26(%rip),%rax
mov    (%rax),%esi
mov    0x2e3d(%rip),%rax
mov    (%rax),%edx
xor    %edi,%edi
call   1040 <init_pair@plt>
mov    0x2dfd(%rip),%rax
mov    (%rax),%esi
mov    0x2e24(%rip),%rax
mov    (%rax),%edx
mov    $0x1,%edi
call   1040 <init_pair@plt>
mov    0x2de9(%rip),%rax
mov    (%rax),%esi
mov    0x2e08(%rip),%rax
mov    (%rax),%edx
mov    $0x2,%edi
call   1040 <init_pair@plt>
mov    0x2dcd(%rip),%rax
mov    (%rax),%esi
mov    0x2dec(%rip),%rax
mov    (%rax),%edx
mov    $0x3,%edi
call   1040 <init_pair@plt>
mov    0x2dc1(%rip),%rax
mov    (%rax),%esi
mov    0x2dd0(%rip),%rax
mov    (%rax),%edx
mov    $0x4,%edi
call   1040 <init_pair@plt>
mov    0x2da5(%rip),%rax
mov    (%rax),%esi
mov    0x2db4(%rip),%rax
mov    (%rax),%edx
mov    $0x5,%edi
call   1040 <init_pair@plt>
mov    0x2d99(%rip),%rax
mov    (%rax),%esi
mov    0x2d98(%rip),%rax
mov    (%rax),%edx
mov    $0x6,%edi
call   1040 <init_pair@plt>
mov    -0xc(%rbp),%edi
call   1070 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1060 <attron@plt>
cmpl   $0x1,-0xc(%rbp)
jne    12d5 <printare_piesa+0x155>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
sub    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
sub    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
cmpl   $0x2,-0xc(%rbp)
jne    13a2 <printare_piesa+0x222>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x10(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1355 <printare_piesa+0x1d5>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
sub    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
add    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
sub    $0x2,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    139d <printare_piesa+0x21d>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
add    $0x2,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    13a2 <printare_piesa+0x222>
cmpl   $0x3,-0xc(%rbp)
jne    145d <printare_piesa+0x2dd>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
add    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x10(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1425 <printare_piesa+0x2a5>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
add    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    1458 <printare_piesa+0x2d8>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
sub    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    145d <printare_piesa+0x2dd>
cmpl   $0x4,-0xc(%rbp)
jne    1518 <printare_piesa+0x398>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x10(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    14e0 <printare_piesa+0x360>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
add    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    -0x8(%rbp),%esi
add    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    1513 <printare_piesa+0x393>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
sub    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
add    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    1518 <printare_piesa+0x398>
cmpl   $0x5,-0xc(%rbp)
jne    168f <printare_piesa+0x50f>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x10(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1580 <printare_piesa+0x400>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
sub    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
add    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    15b0 <printare_piesa+0x430>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    15e4 <printare_piesa+0x464>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
sub    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    168a <printare_piesa+0x50a>
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    1618 <printare_piesa+0x498>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
add    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    1685 <printare_piesa+0x505>
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x2,%edx
jne    164c <printare_piesa+0x4cc>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    -0x8(%rbp),%esi
add    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    1680 <printare_piesa+0x500>
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x3,%edx
jne    167b <printare_piesa+0x4fb>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    -0x8(%rbp),%esi
sub    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    1680 <printare_piesa+0x500>
jmp    1685 <printare_piesa+0x505>
jmp    168a <printare_piesa+0x50a>
jmp    168f <printare_piesa+0x50f>
cmpl   $0x6,-0xc(%rbp)
jne    1806 <printare_piesa+0x686>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x10(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    16f7 <printare_piesa+0x577>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
sub    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
add    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    1727 <printare_piesa+0x5a7>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    175b <printare_piesa+0x5db>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
add    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    1801 <printare_piesa+0x681>
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    178f <printare_piesa+0x60f>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    -0x8(%rbp),%esi
add    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    17fc <printare_piesa+0x67c>
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x2,%edx
jne    17c3 <printare_piesa+0x643>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    -0x8(%rbp),%esi
sub    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    17f7 <printare_piesa+0x677>
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x3,%edx
jne    17f2 <printare_piesa+0x672>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
sub    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    17f7 <printare_piesa+0x677>
jmp    17fc <printare_piesa+0x67c>
jmp    1801 <printare_piesa+0x681>
jmp    1806 <printare_piesa+0x686>
cmpl   $0x7,-0xc(%rbp)
jne    1971 <printare_piesa+0x7f1>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x10(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    186e <printare_piesa+0x6ee>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
sub    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
add    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    189e <printare_piesa+0x71e>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    18cf <printare_piesa+0x74f>
mov    -0x4(%rbp),%edi
add    $0x1,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    196c <printare_piesa+0x7ec>
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    1900 <printare_piesa+0x780>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
add    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    1967 <printare_piesa+0x7e7>
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x2,%edx
jne    1931 <printare_piesa+0x7b1>
mov    -0x4(%rbp),%edi
sub    $0x1,%edi
mov    -0x8(%rbp),%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    1962 <printare_piesa+0x7e2>
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x3,%edx
jne    195d <printare_piesa+0x7dd>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
sub    $0x1,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    1962 <printare_piesa+0x7e2>
jmp    1967 <printare_piesa+0x7e7>
jmp    196c <printare_piesa+0x7ec>
jmp    1971 <printare_piesa+0x7f1>
mov    $0x0,%al
call   1090 <refresh@plt>
mov    -0xc(%rbp),%edi
call   1070 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1030 <attroff@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<printare_piesa>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %ecx,%r13d
mov    %edx,%r14d
mov    %esi,%r12d
mov    %edi,%r15d
xor    %eax,%eax
call   1050 <start_color@plt>
mov    0x2e23(%rip),%rax
mov    (%rax),%esi
mov    0x2e3a(%rip),%rbp
mov    0x0(%rbp),%edx
xor    %edi,%edi
call   1040 <init_pair@plt>
mov    0x2df9(%rip),%rax
mov    (%rax),%esi
mov    0x0(%rbp),%edx
mov    $0x1,%edi
call   1040 <init_pair@plt>
mov    0x2deb(%rip),%rbx
mov    (%rbx),%esi
mov    0x0(%rbp),%edx
mov    $0x2,%edi
call   1040 <init_pair@plt>
mov    (%rbx),%esi
mov    0x0(%rbp),%edx
mov    $0x3,%edi
call   1040 <init_pair@plt>
mov    0x2dd6(%rip),%rbx
mov    (%rbx),%esi
mov    0x0(%rbp),%edx
mov    $0x4,%edi
call   1040 <init_pair@plt>
mov    (%rbx),%esi
mov    0x0(%rbp),%edx
mov    $0x5,%edi
call   1040 <init_pair@plt>
mov    0x2dc1(%rip),%rax
mov    (%rax),%esi
mov    0x0(%rbp),%edx
mov    $0x6,%edi
call   1040 <init_pair@plt>
mov    %r14d,%edi
call   1070 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1060 <attron@plt>
lea    -0x1(%r14),%eax
cmp    $0x6,%eax
ja     1632 <printare_piesa+0x4b2>
lea    0xdaf(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    %r15d,%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
lea    0x1(%r15),%ebx
mov    %ebx,%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
add    $0xffffffff,%r12d
mov    %r15d,%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
mov    %ebx,%edi
jmp    1620 <printare_piesa+0x4a0>
mov    %r15d,%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
lea    0x1(%r12),%ebp
mov    %r15d,%edi
mov    %ebp,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
test   $0x1,%r13b
jne    1477 <printare_piesa+0x2f7>
lea    -0x1(%r15),%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
add    $0x1,%r15d
mov    %r15d,%edi
mov    %ebp,%esi
jmp    1623 <printare_piesa+0x4a3>
mov    %r15d,%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
lea    0x1(%r15),%ebp
mov    %ebp,%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
test   $0x1,%r13b
jne    1495 <printare_piesa+0x315>
add    $0x1,%r12d
mov    %r15d,%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    15f9 <printare_piesa+0x479>
mov    %r15d,%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
test   $0x1,%r13b
jne    14b7 <printare_piesa+0x337>
lea    -0x1(%r12),%esi
mov    %r15d,%edi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
lea    0x1(%r12),%esi
mov    %r15d,%edi
jmp    14d4 <printare_piesa+0x354>
mov    %r15d,%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
test   $0x1,%r13b
jne    150e <printare_piesa+0x38e>
lea    -0x1(%r12),%esi
mov    %r15d,%edi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
lea    0x1(%r12),%esi
mov    %r15d,%edi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
add    $0xfffffffe,%r12d
jmp    161d <printare_piesa+0x49d>
mov    %r15d,%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
test   $0x1,%r13b
jne    1543 <printare_piesa+0x3c3>
lea    -0x1(%r12),%esi
mov    %r15d,%edi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
lea    0x1(%r12),%esi
mov    %r15d,%edi
jmp    1560 <printare_piesa+0x3e0>
mov    %r15d,%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
test   $0x1,%r13b
jne    15a0 <printare_piesa+0x420>
lea    -0x1(%r12),%esi
mov    %r15d,%edi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
lea    0x1(%r12),%esi
mov    %r15d,%edi
jmp    15bd <printare_piesa+0x43d>
add    $0x1,%r15d
mov    %r15d,%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
jmp    1619 <printare_piesa+0x499>
lea    -0x1(%r12),%esi
mov    %r15d,%edi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
add    $0x1,%r12d
mov    %ebp,%edi
jmp    1620 <printare_piesa+0x4a0>
lea    0x1(%r15),%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
lea    -0x1(%r15),%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
lea    0x3(%r13),%eax
test   %r13d,%r13d
cmovns %r13d,%eax
and    $0xfffffffc,%eax
sub    %eax,%r13d
cmp    $0x3,%r13d
ja     1632 <printare_piesa+0x4b2>
lea    0xb37(%rip),%rax
movslq (%rax,%r13,4),%rcx
add    %rax,%rcx
jmp    *%rcx
lea    -0x1(%r15),%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
lea    0x1(%r15),%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
add    $0x2,%r15d
jmp    161d <printare_piesa+0x49d>
lea    0x1(%r15),%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
lea    -0x1(%r15),%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
lea    0x3(%r13),%eax
test   %r13d,%r13d
cmovns %r13d,%eax
and    $0xfffffffc,%eax
sub    %eax,%r13d
cmp    $0x3,%r13d
ja     1632 <printare_piesa+0x4b2>
lea    0xa9b(%rip),%rax
movslq (%rax,%r13,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x1,%r15d
jmp    15ff <printare_piesa+0x47f>
lea    0x1(%r15),%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
lea    -0x1(%r15),%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
lea    0x3(%r13),%eax
test   %r13d,%r13d
cmovns %r13d,%eax
and    $0xfffffffc,%eax
sub    %eax,%r13d
cmp    $0x3,%r13d
ja     1632 <printare_piesa+0x4b2>
lea    0xa32(%rip),%rax
movslq (%rax,%r13,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x1,%r15d
jmp    161d <printare_piesa+0x49d>
add    $0xffffffff,%r15d
jmp    161d <printare_piesa+0x49d>
add    $0x1,%r12d
jmp    161d <printare_piesa+0x49d>
add    $0xffffffff,%r15d
add    $0x1,%r12d
jmp    161d <printare_piesa+0x49d>
add    $0xffffffff,%r15d
jmp    1619 <printare_piesa+0x499>
add    $0x1,%r15d
add    $0xffffffff,%r12d
mov    %r15d,%edi
mov    %r12d,%esi
call   10a0 <move@plt>
mov    $0x40,%edi
call   1080 <addch@plt>
xor    %eax,%eax
call   1090 <refresh@plt>
mov    %r14d,%edi
call   1070 <COLOR_PAIR@plt>
mov    %eax,%edi
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <attroff@plt>

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

LLVM IR (-O2):
@COLOR_YELLOW = global i32 0
@COLOR_BLACK = global i32 0
@COLOR_RED = global i32 0
@COLOR_BLUE = global i32 0
@COLOR_MAGENTA = global i32 0
@COLOR_GREEN = global i32 0
define void @printare_piesa(i32 %0, i32 %1, i32 %2, i32 %3) {
%5 = tail call i32 (...) @start_color()
%6 = load i32, i32* @COLOR_YELLOW
%7 = load i32, i32* @COLOR_BLACK
%8 = tail call i32 @init_pair(i32 0, i32 %6, i32 %7)
%9 = load i32, i32* @COLOR_RED
%10 = load i32, i32* @COLOR_BLACK
%11 = tail call i32 @init_pair(i32 1, i32 %9, i32 %10)
%12 = load i32, i32* @COLOR_BLUE
%13 = load i32, i32* @COLOR_BLACK
%14 = tail call i32 @init_pair(i32 2, i32 %12, i32 %13)
%15 = load i32, i32* @COLOR_BLUE
%16 = load i32, i32* @COLOR_BLACK
%17 = tail call i32 @init_pair(i32 3, i32 %15, i32 %16)
%18 = load i32, i32* @COLOR_MAGENTA
%19 = load i32, i32* @COLOR_BLACK
%20 = tail call i32 @init_pair(i32 4, i32 %18, i32 %19)
%21 = load i32, i32* @COLOR_MAGENTA
%22 = load i32, i32* @COLOR_BLACK
%23 = tail call i32 @init_pair(i32 5, i32 %21, i32 %22)
%24 = load i32, i32* @COLOR_GREEN
%25 = load i32, i32* @COLOR_BLACK
%26 = tail call i32 @init_pair(i32 6, i32 %24, i32 %25)
%27 = tail call i32 @COLOR_PAIR(i32 %2)
%28 = tail call i32 @attron(i32 %27)
switch i32 %2, label %208 [
i32 1, label %29
i32 2, label %39
i32 3, label %62
i32 4, label %82
i32 5, label %102
i32 6, label %138
i32 7, label %174
]
29: ; preds = %4
%30 = tail call i32 @move(i32 %0, i32 %1)
%31 = tail call i32 @addch(i8 signext 64)
%32 = add nsw i32 %0, 1
%33 = tail call i32 @move(i32 %32, i32 %1)
%34 = tail call i32 @addch(i8 signext 64)
%35 = add nsw i32 %1, -1
%36 = tail call i32 @move(i32 %0, i32 %35)
%37 = tail call i32 @addch(i8 signext 64)
%38 = tail call i32 @move(i32 %32, i32 %35)
br label %206
39: ; preds = %4
%40 = tail call i32 @move(i32 %0, i32 %1)
%41 = tail call i32 @addch(i8 signext 64)
%42 = and i32 %3, 1
%43 = icmp eq i32 %42, 0
br i1 %43, label %44, label %53
44: ; preds = %39
%45 = add nsw i32 %1, -1
%46 = tail call i32 @move(i32 %0, i32 %45)
%47 = tail call i32 @addch(i8 signext 64)
%48 = add nsw i32 %1, 1
%49 = tail call i32 @move(i32 %0, i32 %48)
%50 = tail call i32 @addch(i8 signext 64)
%51 = add nsw i32 %1, -2
%52 = tail call i32 @move(i32 %0, i32 %51)
br label %206
53: ; preds = %39
%54 = add nsw i32 %0, -1
%55 = tail call i32 @move(i32 %54, i32 %1)
%56 = tail call i32 @addch(i8 signext 64)
%57 = add nsw i32 %0, 1
%58 = tail call i32 @move(i32 %57, i32 %1)
%59 = tail call i32 @addch(i8 signext 64)
%60 = add nsw i32 %0, 2
%61 = tail call i32 @move(i32 %60, i32 %1)
br label %206
62: ; preds = %4
%63 = tail call i32 @move(i32 %0, i32 %1)
%64 = tail call i32 @addch(i8 signext 64)
%65 = add nsw i32 %1, 1
%66 = tail call i32 @move(i32 %0, i32 %65)
%67 = tail call i32 @addch(i8 signext 64)
%68 = and i32 %3, 1
%69 = icmp eq i32 %68, 0
br i1 %69, label %70, label %76
70: ; preds = %62
%71 = add nsw i32 %0, -1
%72 = tail call i32 @move(i32 %71, i32 %1)
%73 = tail call i32 @addch(i8 signext 64)
%74 = add nsw i32 %0, 1
%75 = tail call i32 @move(i32 %74, i32 %65)
br label %206
76: ; preds = %62
%77 = add nsw i32 %0, 1
%78 = tail call i32 @move(i32 %77, i32 %1)
%79 = tail call i32 @addch(i8 signext 64)
%80 = add nsw i32 %1, -1
%81 = tail call i32 @move(i32 %77, i32 %80)
br label %206
82: ; preds = %4
%83 = tail call i32 @move(i32 %0, i32 %1)
%84 = tail call i32 @addch(i8 signext 64)
%85 = add nsw i32 %0, 1
%86 = tail call i32 @move(i32 %85, i32 %1)
%87 = tail call i32 @addch(i8 signext 64)
%88 = and i32 %3, 1
%89 = icmp eq i32 %88, 0
br i1 %89, label %90, label %96
90: ; preds = %82
%91 = add nsw i32 %1, 1
%92 = tail call i32 @move(i32 %0, i32 %91)
%93 = tail call i32 @addch(i8 signext 64)
%94 = add nsw i32 %0, -1
%95 = tail call i32 @move(i32 %94, i32 %91)
br label %206
96: ; preds = %82
%97 = add nsw i32 %1, -1
%98 = tail call i32 @move(i32 %0, i32 %97)
%99 = tail call i32 @addch(i8 signext 64)
%100 = add nsw i32 %1, 1
%101 = tail call i32 @move(i32 %85, i32 %100)
br label %206
102: ; preds = %4
%103 = tail call i32 @move(i32 %0, i32 %1)
%104 = tail call i32 @addch(i8 signext 64)
%105 = and i32 %3, 1
%106 = icmp eq i32 %105, 0
br i1 %106, label %107, label %113
107: ; preds = %102
%108 = add nsw i32 %1, -1
%109 = tail call i32 @move(i32 %0, i32 %108)
%110 = tail call i32 @addch(i8 signext 64)
%111 = add nsw i32 %1, 1
%112 = tail call i32 @move(i32 %0, i32 %111)
br label %119
113: ; preds = %102
%114 = add nsw i32 %0, 1
%115 = tail call i32 @move(i32 %114, i32 %1)
%116 = tail call i32 @addch(i8 signext 64)
%117 = add nsw i32 %0, -1
%118 = tail call i32 @move(i32 %117, i32 %1)
br label %119
119: ; preds = %113, %107
%120 = tail call i32 @addch(i8 signext 64)
%121 = srem i32 %3, 4
switch i32 %121, label %208 [
i32 0, label %122
i32 1, label %126
i32 2, label %130
i32 3, label %134
]
122: ; preds = %119
%123 = add nsw i32 %0, 1
%124 = add nsw i32 %1, -1
%125 = tail call i32 @move(i32 %123, i32 %124)
br label %206
126: ; preds = %119
%127 = add nsw i32 %0, 1
%128 = add nsw i32 %1, 1
%129 = tail call i32 @move(i32 %127, i32 %128)
br label %206
130: ; preds = %119
%131 = add nsw i32 %0, -1
%132 = add nsw i32 %1, 1
%133 = tail call i32 @move(i32 %131, i32 %132)
br label %206
134: ; preds = %119
%135 = add nsw i32 %0, -1
%136 = add nsw i32 %1, -1
%137 = tail call i32 @move(i32 %135, i32 %136)
br label %206
138: ; preds = %4
%139 = tail call i32 @move(i32 %0, i32 %1)
%140 = tail call i32 @addch(i8 signext 64)
%141 = and i32 %3, 1
%142 = icmp eq i32 %141, 0
br i1 %142, label %143, label %149
143: ; preds = %138
%144 = add nsw i32 %1, -1
%145 = tail call i32 @move(i32 %0, i32 %144)
%146 = tail call i32 @addch(i8 signext 64)
%147 = add nsw i32 %1, 1
%148 = tail call i32 @move(i32 %0, i32 %147)
br label %155
149: ; preds = %138
%150 = add nsw i32 %0, 1
%151 = tail call i32 @move(i32 %150, i32 %1)
%152 = tail call i32 @addch(i8 signext 64)
%153 = add nsw i32 %0, -1
%154 = tail call i32 @move(i32 %153, i32 %1)
br label %155
155: ; preds = %149, %143
%156 = tail call i32 @addch(i8 signext 64)
%157 = srem i32 %3, 4
switch i32 %157, label %208 [
i32 0, label %158
i32 1, label %162
i32 2, label %166
i32 3, label %170
]
158: ; preds = %155
%159 = add nsw i32 %0, 1
%160 = add nsw i32 %1, 1
%161 = tail call i32 @move(i32 %159, i32 %160)
br label %206
162: ; preds = %155
%163 = add nsw i32 %0, -1
%164 = add nsw i32 %1, 1
%165 = tail call i32 @move(i32 %163, i32 %164)
br label %206
166: ; preds = %155
%167 = add nsw i32 %0, -1
%168 = add nsw i32 %1, -1
%169 = tail call i32 @move(i32 %167, i32 %168)
br label %206
170: ; preds = %155
%171 = add nsw i32 %0, 1
%172 = add nsw i32 %1, -1
%173 = tail call i32 @move(i32 %171, i32 %172)
br label %206
174: ; preds = %4
%175 = tail call i32 @move(i32 %0, i32 %1)
%176 = tail call i32 @addch(i8 signext 64)
%177 = and i32 %3, 1
%178 = icmp eq i32 %177, 0
br i1 %178, label %179, label %185
179: ; preds = %174
%180 = add nsw i32 %1, -1
%181 = tail call i32 @move(i32 %0, i32 %180)
%182 = tail call i32 @addch(i8 signext 64)
%183 = add nsw i32 %1, 1
%184 = tail call i32 @move(i32 %0, i32 %183)
br label %191
185: ; preds = %174
%186 = add nsw i32 %0, 1
%187 = tail call i32 @move(i32 %186, i32 %1)
%188 = tail call i32 @addch(i8 signext 64)
%189 = add nsw i32 %0, -1
%190 = tail call i32 @move(i32 %189, i32 %1)
br label %191
191: ; preds = %185, %179
%192 = tail call i32 @addch(i8 signext 64)
%193 = srem i32 %3, 4
switch i32 %193, label %208 [
i32 0, label %194
i32 1, label %197
i32 2, label %200
i32 3, label %203
]
194: ; preds = %191
%195 = add nsw i32 %0, 1
%196 = tail call i32 @move(i32 %195, i32 %1)
br label %206
197: ; preds = %191
%198 = add nsw i32 %1, 1
%199 = tail call i32 @move(i32 %0, i32 %198)
br label %206
200: ; preds = %191
%201 = add nsw i32 %0, -1
%202 = tail call i32 @move(i32 %201, i32 %1)
br label %206
203: ; preds = %191
%204 = add nsw i32 %1, -1
%205 = tail call i32 @move(i32 %0, i32 %204)
br label %206
206: ; preds = %197, %203, %200, %194, %29, %44, %53, %70, %76, %90, %96, %122, %130, %134, %126, %158, %166, %170, %162
%207 = tail call i32 @addch(i8 signext 64)
br label %208
208: ; preds = %206, %155, %119, %191, %4
%209 = tail call i32 (...) @refresh()
%210 = tail call i32 @COLOR_PAIR(i32 %2)
%211 = tail call i32 @attroff(i32 %210)
ret void
}