#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 abs(char);
char *opakuj(char, char *);
char *pridej_retezec(char *, char *);
char *pridej_znak(char, char *);
char *Varianta_C(char *veta, char *vysledek, int nasobek) {
  int vysledky[7] = {0, 36, 74, 110, 146, 182, 220};
  int posuny[7] = {0, -2, 3, 1, -1, -3, 2};
  int delka = 0;
  while (veta[delka] && veta[delka] != 27)
    delka++;
  char optimalni_pocatky[delka];
  char optimalni_opravy[delka];
  char optimalni_korekce[delka];
  int i, j, k;
  int pricti = (nasobek - 1) >> 1;
  int ignorovano = 0;
  i = delka;
  while (i--) {
    j = 7;
    int best_d = 256;
    while (j--) {
      k = abs(veta[i] - vysledky[j]);
      int nas = (k + pricti) / nasobek;
      int kor = (k + pricti) % nasobek;
      kor -= pricti;
      int d = abs(posuny[j]) + nas + abs(kor);
      if (d < best_d) {
        if (j == 0) {
          if (i + ignorovano + 1 == delka) {
            ignorovano++;
          } else
            break;
        }
        best_d = d;
        optimalni_pocatky[i] = posuny[j];
        if (veta[i] - vysledky[j] >= 0) {
          optimalni_opravy[i] = nas;
          optimalni_korekce[i] = kor;
        } else {
          optimalni_opravy[i] = -nas;
          optimalni_korekce[i] = -kor;
        }
      }
    }
  }
  int best_p;
  int best_d = -1;
  for (j = -3; j <= 3; j++) {
    k = 0;
    if (j) {
      k += 2 + 2 * abs(j);
      if (ignorovano)
        k--;
    }
    i = delka - ignorovano;
    while (i-- > 1)
      k += abs(optimalni_pocatky[i] - j);
    if (k < best_d || best_d < 0) {
      best_p = j;
      best_d = k;
    }
  }
  if (best_p) {
    i = delka - ignorovano;
    while (i-- > 1)
      optimalni_pocatky[i] -= best_p;
  }
  vysledek = pridej_retezec("++[", vysledek);
  if (best_p) {
    vysledek = pridej_znak('<', vysledek);
    vysledek = opakuj(-best_p, vysledek);
  }
  i = delka - ignorovano;
  while (i--) {
    vysledek = pridej_znak('<', vysledek);
    vysledek = opakuj(optimalni_pocatky[i], vysledek);
  }
  if (best_p) {
    vysledek = pridej_retezec("[>", vysledek);
    vysledek = opakuj(best_p, vysledek);
    vysledek = pridej_retezec("]>-------]", vysledek);
  } else
    vysledek = pridej_retezec("[>]<-------]", vysledek);
  i = ignorovano;
  if (best_p)
    i--;
  if (i < 0)
    vysledek = pridej_znak('<', vysledek);
  else
    while (i--)
      vysledek = pridej_znak('>', vysledek);
  vysledek = opakuj(nasobek, vysledek);
  vysledek = pridej_znak('[', vysledek);
  i = delka;
  while (i--) {
    vysledek = pridej_znak('<', vysledek);
    vysledek = opakuj(optimalni_opravy[i], vysledek);
  }
  vysledek = pridej_retezec("[>]<-]", vysledek);
  i = delka;
  while (i--) {
    vysledek = pridej_znak('<', vysledek);
    vysledek = opakuj(optimalni_korekce[i], vysledek);
  }
  vysledek = pridej_retezec("[.>]", vysledek);
  *vysledek = 0;
  return vysledek;
}


x86 assembly (clang, -O0):
<Varianta_C>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    0xea3(%rip),%rax
mov    %rax,-0x30(%rbp)
mov    0xea0(%rip),%rax
mov    %rax,-0x28(%rbp)
mov    0xe9d(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    0xe9b(%rip),%eax
mov    %eax,-0x18(%rbp)
mov    0xe99(%rip),%rax
mov    %rax,-0x50(%rbp)
mov    0xe96(%rip),%rax
mov    %rax,-0x48(%rbp)
mov    0xe93(%rip),%rax
mov    %rax,-0x40(%rbp)
mov    0xe91(%rip),%eax
mov    %eax,-0x38(%rbp)
movl   $0x0,-0x54(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0xa5(%rbp)
je     11e6 <Varianta_C+0xa6>
mov    -0x8(%rbp),%rax
movslq -0x54(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x1b,%eax
setne  %al
mov    %al,-0xa5(%rbp)
mov    -0xa5(%rbp),%al
test   $0x1,%al
jne    11f9 <Varianta_C+0xb9>
jmp    1207 <Varianta_C+0xc7>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    11b1 <Varianta_C+0x71>
mov    -0x54(%rbp),%eax
mov    %rsp,%rcx
mov    %rcx,-0x60(%rbp)
mov    %rax,%rdx
add    $0xf,%rdx
and    $0xfffffffffffffff0,%rdx
mov    %rsp,%rcx
sub    %rdx,%rcx
mov    %rcx,-0xc0(%rbp)
mov    %rcx,%rsp
mov    %rax,-0x68(%rbp)
mov    -0x54(%rbp),%eax
mov    %rax,%rdx
add    $0xf,%rdx
and    $0xfffffffffffffff0,%rdx
mov    %rsp,%rcx
sub    %rdx,%rcx
mov    %rcx,-0xb8(%rbp)
mov    %rcx,%rsp
mov    %rax,-0x70(%rbp)
mov    -0x54(%rbp),%eax
mov    %rax,%rdx
add    $0xf,%rdx
and    $0xfffffffffffffff0,%rdx
mov    %rsp,%rcx
sub    %rdx,%rcx
mov    %rcx,-0xb0(%rbp)
mov    %rcx,%rsp
mov    %rax,-0x78(%rbp)
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
sar    $0x1,%eax
mov    %eax,-0x88(%rbp)
movl   $0x0,-0x8c(%rbp)
mov    -0x54(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x7c(%rbp)
cmp    $0x0,%eax
je     146c <Varianta_C+0x32c>
movl   $0x7,-0x80(%rbp)
movl   $0x100,-0x90(%rbp)
mov    -0x80(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x80(%rbp)
cmp    $0x0,%eax
je     1467 <Varianta_C+0x327>
mov    -0x8(%rbp),%rax
movslq -0x7c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movslq -0x80(%rbp),%rcx
sub    -0x30(%rbp,%rcx,4),%eax
movsbl %al,%edi
call   1030 <abs@plt>
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
add    -0x88(%rbp),%eax
cltd
idivl  -0x14(%rbp)
mov    %eax,-0x94(%rbp)
mov    -0x84(%rbp),%eax
add    -0x88(%rbp),%eax
cltd
idivl  -0x14(%rbp)
mov    %edx,-0x98(%rbp)
mov    -0x88(%rbp),%ecx
mov    -0x98(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x98(%rbp)
movslq -0x80(%rbp),%rax
mov    -0x50(%rbp,%rax,4),%eax
movsbl %al,%edi
call   1030 <abs@plt>
add    -0x94(%rbp),%eax
mov    %eax,-0xc4(%rbp)
mov    -0x98(%rbp),%eax
movsbl %al,%edi
call   1030 <abs@plt>
mov    %eax,%ecx
mov    -0xc4(%rbp),%eax
add    %ecx,%eax
mov    %eax,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
cmp    -0x90(%rbp),%eax
jge    1462 <Varianta_C+0x322>
cmpl   $0x0,-0x80(%rbp)
jne    13b7 <Varianta_C+0x277>
mov    -0x7c(%rbp),%eax
add    -0x8c(%rbp),%eax
add    $0x1,%eax
cmp    -0x54(%rbp),%eax
jne    13ad <Varianta_C+0x26d>
mov    -0x8c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8c(%rbp)
jmp    13b2 <Varianta_C+0x272>
jmp    1467 <Varianta_C+0x327>
jmp    13b7 <Varianta_C+0x277>
mov    -0xc0(%rbp),%rax
mov    -0x9c(%rbp),%ecx
mov    %ecx,-0x90(%rbp)
movslq -0x80(%rbp),%rcx
mov    -0x50(%rbp,%rcx,4),%ecx
mov    %cl,%dl
movslq -0x7c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x7c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movslq -0x80(%rbp),%rcx
sub    -0x30(%rbp,%rcx,4),%eax
cmp    $0x0,%eax
jl     142b <Varianta_C+0x2eb>
mov    -0xb0(%rbp),%rax
mov    -0xb8(%rbp),%rcx
mov    -0x94(%rbp),%edx
mov    %dl,%sil
movslq -0x7c(%rbp),%rdx
mov    %sil,(%rcx,%rdx,1)
mov    -0x98(%rbp),%ecx
mov    %cl,%dl
movslq -0x7c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
jmp    145d <Varianta_C+0x31d>
mov    -0xb0(%rbp),%rax
mov    -0xb8(%rbp),%rcx
xor    %edx,%edx
sub    -0x94(%rbp),%edx
mov    %dl,%sil
movslq -0x7c(%rbp),%rdx
mov    %sil,(%rcx,%rdx,1)
xor    %ecx,%ecx
sub    -0x98(%rbp),%ecx
mov    %cl,%dl
movslq -0x7c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
jmp    1462 <Varianta_C+0x322>
jmp    12b8 <Varianta_C+0x178>
jmp    1293 <Varianta_C+0x153>
movl   $0xffffffff,-0xa4(%rbp)
ff ff ff
movl   $0xfffffffd,-0x80(%rbp)
cmpl   $0x3,-0x80(%rbp)
jg     156b <Varianta_C+0x42b>
movl   $0x0,-0x84(%rbp)
cmpl   $0x0,-0x80(%rbp)
je     14d9 <Varianta_C+0x399>
mov    -0x80(%rbp),%eax
movsbl %al,%edi
call   1030 <abs@plt>
shl    $0x1,%eax
add    $0x2,%eax
add    -0x84(%rbp),%eax
mov    %eax,-0x84(%rbp)
cmpl   $0x0,-0x8c(%rbp)
je     14d4 <Varianta_C+0x394>
mov    -0x84(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x84(%rbp)
jmp    14d9 <Varianta_C+0x399>
mov    -0x54(%rbp),%eax
sub    -0x8c(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x7c(%rbp)
cmp    $0x1,%eax
jle    1524 <Varianta_C+0x3e4>
mov    -0xc0(%rbp),%rax
movslq -0x7c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    -0x80(%rbp),%eax
movsbl %al,%edi
call   1030 <abs@plt>
add    -0x84(%rbp),%eax
mov    %eax,-0x84(%rbp)
jmp    14e5 <Varianta_C+0x3a5>
mov    -0x84(%rbp),%eax
cmp    -0xa4(%rbp),%eax
jl     1543 <Varianta_C+0x403>
cmpl   $0x0,-0xa4(%rbp)
jge    1558 <Varianta_C+0x418>
mov    -0x80(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0x84(%rbp),%eax
mov    %eax,-0xa4(%rbp)
jmp    155d <Varianta_C+0x41d>
mov    -0x80(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x80(%rbp)
jmp    147d <Varianta_C+0x33d>
cmpl   $0x0,-0xa0(%rbp)
je     15bc <Varianta_C+0x47c>
mov    -0x54(%rbp),%eax
sub    -0x8c(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x7c(%rbp)
cmp    $0x1,%eax
jle    15b7 <Varianta_C+0x477>
mov    -0xc0(%rbp),%rax
mov    -0xa0(%rbp),%esi
movslq -0x7c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edx
sub    %esi,%edx
mov    %dl,(%rax,%rcx,1)
jmp    1584 <Varianta_C+0x444>
jmp    15bc <Varianta_C+0x47c>
mov    -0x10(%rbp),%rsi
lea    0xa75(%rip),%rdi
call   1050 <pridej_retezec@plt>
mov    %rax,-0x10(%rbp)
cmpl   $0x0,-0xa0(%rbp)
je     1607 <Varianta_C+0x4c7>
mov    -0x10(%rbp),%rsi
mov    $0x3c,%edi
call   1060 <pridej_znak@plt>
mov    %rax,-0x10(%rbp)
xor    %eax,%eax
sub    -0xa0(%rbp),%eax
mov    -0x10(%rbp),%rsi
movsbl %al,%edi
call   1040 <opakuj@plt>
mov    %rax,-0x10(%rbp)
mov    -0x54(%rbp),%eax
sub    -0x8c(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x7c(%rbp)
cmp    $0x0,%eax
je     165f <Varianta_C+0x51f>
mov    -0x10(%rbp),%rsi
mov    $0x3c,%edi
call   1060 <pridej_znak@plt>
mov    %rax,%rcx
mov    -0xc0(%rbp),%rax
mov    %rcx,-0x10(%rbp)
movslq -0x7c(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    -0x10(%rbp),%rsi
movsbl %al,%edi
call   1040 <opakuj@plt>
mov    %rax,-0x10(%rbp)
jmp    1613 <Varianta_C+0x4d3>
cmpl   $0x0,-0xa0(%rbp)
je     16af <Varianta_C+0x56f>
mov    -0x10(%rbp),%rsi
lea    0x9c9(%rip),%rdi
call   1050 <pridej_retezec@plt>
mov    %rax,-0x10(%rbp)
mov    -0xa0(%rbp),%eax
mov    -0x10(%rbp),%rsi
movsbl %al,%edi
call   1040 <opakuj@plt>
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rsi
lea    0x9a2(%rip),%rdi
call   1050 <pridej_retezec@plt>
mov    %rax,-0x10(%rbp)
jmp    16c3 <Varianta_C+0x583>
mov    -0x10(%rbp),%rsi
lea    0x994(%rip),%rdi
call   1050 <pridej_retezec@plt>
mov    %rax,-0x10(%rbp)
mov    -0x8c(%rbp),%eax
mov    %eax,-0x7c(%rbp)
cmpl   $0x0,-0xa0(%rbp)
je     16e2 <Varianta_C+0x5a2>
mov    -0x7c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x7c(%rbp)
cmpl   $0x0,-0x7c(%rbp)
jge    1703 <Varianta_C+0x5c3>
mov    -0x10(%rbp),%rsi
mov    $0x3c,%edi
call   1060 <pridej_znak@plt>
mov    %rax,-0x10(%rbp)
jmp    1738 <Varianta_C+0x5f8>
jmp    1708 <Varianta_C+0x5c8>
mov    -0x7c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x7c(%rbp)
cmp    $0x0,%eax
je     1733 <Varianta_C+0x5f3>
mov    -0x10(%rbp),%rsi
mov    $0x3e,%edi
call   1060 <pridej_znak@plt>
mov    %rax,-0x10(%rbp)
jmp    1708 <Varianta_C+0x5c8>
jmp    1738 <Varianta_C+0x5f8>
mov    -0x14(%rbp),%eax
mov    -0x10(%rbp),%rsi
movsbl %al,%edi
call   1040 <opakuj@plt>
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rsi
mov    $0x5b,%edi
call   1060 <pridej_znak@plt>
mov    %rax,-0x10(%rbp)
mov    -0x54(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x7c(%rbp)
cmp    $0x0,%eax
je     17af <Varianta_C+0x66f>
mov    -0x10(%rbp),%rsi
mov    $0x3c,%edi
call   1060 <pridej_znak@plt>
mov    %rax,%rcx
mov    -0xb8(%rbp),%rax
mov    %rcx,-0x10(%rbp)
movslq -0x7c(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    -0x10(%rbp),%rsi
movsbl %al,%edi
call   1040 <opakuj@plt>
mov    %rax,-0x10(%rbp)
jmp    1763 <Varianta_C+0x623>
mov    -0x10(%rbp),%rsi
lea    0x8a1(%rip),%rdi
call   1050 <pridej_retezec@plt>
mov    %rax,-0x10(%rbp)
mov    -0x54(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x7c(%rbp)
cmp    $0x0,%eax
je     1815 <Varianta_C+0x6d5>
mov    -0x10(%rbp),%rsi
mov    $0x3c,%edi
call   1060 <pridej_znak@plt>
mov    %rax,%rcx
mov    -0xb0(%rbp),%rax
mov    %rcx,-0x10(%rbp)
movslq -0x7c(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    -0x10(%rbp),%rsi
movsbl %al,%edi
call   1040 <opakuj@plt>
mov    %rax,-0x10(%rbp)
jmp    17c9 <Varianta_C+0x689>
mov    -0x10(%rbp),%rsi
lea    0x842(%rip),%rdi
call   1050 <pridej_retezec@plt>
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x10(%rbp),%rax
mov    -0x60(%rbp),%rcx
mov    %rcx,%rsp
mov    %rbp,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Varianta_C>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x88,%rsp
mov    %rdx,-0x80(%rbp)
mov    %rdi,-0x60(%rbp)
mov    $0x3,%cl
xor    %edx,%edx
mov    -0x60(%rbp),%rax
movzbl (%rax,%rdx,1),%eax
test   %al,%al
je     1179 <Varianta_C+0x39>
cmp    $0x1b,%al
je     1179 <Varianta_C+0x39>
add    $0x1,%rdx
add    $0x1,%cl
jmp    1160 <Varianta_C+0x20>
mov    %edx,%r8d
mov    %rsp,%rdi
lea    0xf(%r8),%rax
and    $0xfffffffffffffff0,%rax
sub    %rax,%rdi
mov    %rdi,-0x38(%rbp)
mov    %rdi,%rsp
mov    %rsp,%rdi
sub    %rax,%rdi
mov    %rdi,%rsp
mov    %rsp,%rbx
sub    %rax,%rbx
mov    %rbx,%rsp
test   %edx,%edx
mov    %rdx,-0x50(%rbp)
mov    %r8,-0xa0(%rbp)
mov    %rbx,-0xa8(%rbp)
mov    %rdi,-0x78(%rbp)
mov    %rsi,-0x98(%rbp)
mov    %cl,-0x44(%rbp)
je     1305 <Varianta_C+0x1c5>
mov    -0x80(%rbp),%rax
add    $0xffffffff,%eax
sar    %eax
mov    %eax,-0x48(%rbp)
xor    %eax,%eax
mov    %rax,-0x58(%rbp)
jmp    11f9 <Varianta_C+0xb9>
mov    -0x40(%rbp),%r8
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
test   %r8,%r8
je     130b <Varianta_C+0x1cb>
mov    %r8d,%eax
mov    %rax,-0x70(%rbp)
add    $0xffffffffffffffff,%r8
movl   $0x100,-0x2c(%rbp)
mov    $0x6,%r15d
mov    %r8,-0x40(%rbp)
jmp    122a <Varianta_C+0xea>
nopw   0x0(%rax,%rax,1)
mov    -0x40(%rbp),%r8
add    $0xffffffffffffffff,%r15
jae    11f0 <Varianta_C+0xb0>
mov    -0x60(%rbp),%rax
movzbl (%rax,%r8,1),%eax
lea    0xdc6(%rip),%rcx
mov    (%rcx,%r15,4),%ecx
mov    %ecx,-0x68(%rbp)
sub    %cl,%al
movsbl %al,%edi
call   1030 <abs@plt>
mov    -0x48(%rbp),%ecx
add    %ecx,%eax
cltd
idivl  -0x80(%rbp)
mov    %eax,%r13d
mov    %edx,%ebx
sub    %ecx,%ebx
lea    0xdbe(%rip),%rax
movzbl (%rax,%r15,4),%r12d
movsbl %r12b,%edi
call   1030 <abs@plt>
mov    %eax,%r14d
add    %r13d,%r14d
movsbl %bl,%edi
call   1030 <abs@plt>
add    %r14d,%eax
cmp    -0x2c(%rbp),%eax
jge    1220 <Varianta_C+0xe0>
mov    %r12d,%esi
mov    %r13d,%r12d
mov    -0x68(%rbp),%r13d
test   %r15,%r15
jne    12af <Varianta_C+0x16f>
mov    -0x58(%rbp),%rdx
mov    -0x70(%rbp),%rcx
add    %edx,%ecx
cmp    %ecx,-0x50(%rbp)
jne    11df <Varianta_C+0x9f>
add    $0x1,%edx
mov    %rdx,-0x58(%rbp)
mov    -0x40(%rbp),%r8
mov    -0x38(%rbp),%rcx
mov    %sil,(%rcx,%r8,1)
mov    -0x60(%rbp),%rcx
movsbl (%rcx,%r8,1),%ecx
cmp    %ecx,%r13d
jle    12e0 <Varianta_C+0x1a0>
neg    %r12b
mov    -0x78(%rbp),%rcx
mov    %r12b,(%rcx,%r8,1)
neg    %bl
jmp    12e8 <Varianta_C+0x1a8>
nopl   0x0(%rax,%rax,1)
mov    -0x78(%rbp),%rcx
mov    %r12b,(%rcx,%r8,1)
mov    -0xa8(%rbp),%rcx
mov    %bl,(%rcx,%r8,1)
mov    %eax,-0x2c(%rbp)
add    $0xffffffffffffffff,%r15
jb     122a <Varianta_C+0xea>
jmp    11f0 <Varianta_C+0xb0>
xor    %eax,%eax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rbx
mov    %ebx,%eax
mov    %rax,-0x90(%rbp)
mov    %ebx,%ecx
neg    %ecx
mov    -0x50(%rbp),%rax
add    %rax,%rcx
mov    %rcx,-0x68(%rbp)
mov    %ecx,%r12d
mov    %ebx,%ecx
not    %ecx
lea    (%rcx,%rax,1),%edx
mov    %edx,-0x48(%rbp)
mov    %rcx,-0x88(%rbp)
add    %ecx,%eax
add    $0xffffffff,%eax
mov    %eax,-0x70(%rbp)
mov    -0x44(%rbp),%al
sub    %bl,%al
movzbl %al,%eax
and    $0x3,%eax
mov    %eax,-0x44(%rbp)
mov    $0xfffffffd,%r13d
mov    $0xffffffff,%edx
mov    %r12,-0x40(%rbp)
jmp    13a4 <Varianta_C+0x264>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    -0x60(%rbp),%edx
cmp    %edx,%r15d
setl   %al
test   %edx,%edx
sets   %cl
or     %al,%cl
mov    -0x2c(%rbp),%eax
cmovne %r13d,%eax
mov    %eax,-0x2c(%rbp)
cmovne %r15d,%edx
add    $0x1,%r13d
cmp    $0x4,%r13d
mov    -0x40(%rbp),%r12
mov    -0x58(%rbp),%rbx
je     14b1 <Varianta_C+0x371>
mov    %edx,-0x60(%rbp)
test   %r13d,%r13d
je     13d0 <Varianta_C+0x290>
movsbl %r13b,%edi
call   1030 <abs@plt>
test   %ebx,%ebx
lea    0x2(%rax,%rax,1),%ecx
lea    0x1(%rax,%rax,1),%r15d
cmove  %ecx,%r15d
cmpl   $0x2,-0x68(%rbp)
jl     1370 <Varianta_C+0x230>
jmp    13d9 <Varianta_C+0x299>
nopl   0x0(%rax)
xor    %r15d,%r15d
cmpl   $0x2,-0x68(%rbp)
jl     1370 <Varianta_C+0x230>
testb  $0x3,-0x48(%rbp)
je     1411 <Varianta_C+0x2d1>
mov    -0x44(%rbp),%r14d
mov    %r12,%rbx
mov    -0x38(%rbp),%r12
nopw   0x0(%rax,%rax,1)
add    $0xffffffffffffffff,%rbx
mov    %ebx,%eax
movzbl (%r12,%rax,1),%eax
sub    %r13b,%al
movsbl %al,%edi
call   1030 <abs@plt>
add    %eax,%r15d
add    $0xffffffff,%r14d
jne    13f0 <Varianta_C+0x2b0>
jmp    1418 <Varianta_C+0x2d8>
mov    %r12,%rbx
mov    -0x38(%rbp),%r12
cmpl   $0x3,-0x70(%rbp)
mov    $0xfffffffe,%ecx
jb     1370 <Varianta_C+0x230>
nopw   0x0(%rax,%rax,1)
lea    (%rbx,%rcx,1),%eax
add    $0x1,%eax
movzbl (%r12,%rax,1),%eax
sub    %r13b,%al
movsbl %al,%edi
call   1030 <abs@plt>
mov    $0xfffffffe,%ecx
mov    %eax,%r14d
add    %r15d,%r14d
lea    (%rbx,%rcx,1),%eax
movzbl (%r12,%rax,1),%eax
sub    %r13b,%al
movsbl %al,%edi
call   1030 <abs@plt>
mov    %eax,%r15d
add    %r14d,%r15d
lea    -0x3(%rbx),%eax
movzbl (%r12,%rax,1),%eax
sub    %r13b,%al
movsbl %al,%edi
call   1030 <abs@plt>
mov    %eax,%r14d
add    %r15d,%r14d
add    $0xfffffffffffffffc,%rbx
mov    %ebx,%eax
movzbl (%r12,%rax,1),%eax
sub    %r13b,%al
movsbl %al,%edi
call   1030 <abs@plt>
mov    %eax,%r15d
add    %r14d,%r15d
mov    $0xfffffffe,%ecx
lea    0x1(%rbx),%eax
cmp    $0x2,%eax
jg     1430 <Varianta_C+0x2f0>
jmp    1370 <Varianta_C+0x230>
mov    -0x2c(%rbp),%ebx
test   %ebx,%ebx
je     151e <Varianta_C+0x3de>
cmpl   $0x2,-0x68(%rbp)
mov    -0x50(%rbp),%r15
mov    -0x90(%rbp),%r13
jl     16a0 <Varianta_C+0x560>
mov    -0x88(%rbp),%rax
add    $0x1,%eax
lea    (%rax,%r15,1),%rcx
add    $0xfffffffffffffffe,%rcx
cmp    $0x3,%ecx
jb     1676 <Varianta_C+0x536>
mov    %r13d,%eax
sub    %r15d,%eax
mov    %r13d,%edx
not    %edx
lea    (%rdx,%r15,1),%esi
add    %esi,%eax
add    $0x2,%eax
cmp    %esi,%eax
ja     1676 <Varianta_C+0x536>
movabs $0x1fffffff0,%r10
movzbl %bl,%r8d
cmp    $0xf,%ecx
jae    1541 <Varianta_C+0x401>
xor    %ecx,%ecx
jmp    15f6 <Varianta_C+0x4b6>
lea    0xb17(%rip),%rdi
mov    -0x98(%rbp),%rsi
call   1050 <pridej_retezec@plt>
mov    -0x50(%rbp),%r15
mov    -0x90(%rbp),%r13
jmp    16cf <Varianta_C+0x58f>
mov    %ebx,%r11d
mov    %ecx,%r9d
add    $0x1,%r9
mov    %r9,%rcx
and    %r10,%rcx
movd   %r8d,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm0
lea    (%rdx,%r15,1),%ebx
add    $0x1,%ebx
add    $0xffffffffffffffff,%rbx
lea    (%rdx,%r15,1),%esi
add    $0xffffffff,%esi
add    $0x1,%rsi
and    $0xfffffffffffffff0,%rsi
pxor   %xmm1,%xmm1
movdqa %xmm0,%xmm2
punpcklbw %xmm1,%xmm2
pshufd $0x4e,%xmm2,%xmm2
pshuflw $0x1b,%xmm2,%xmm2
pshufhw $0x1b,%xmm2,%xmm2
punpckhbw %xmm1,%xmm0
pshufd $0x4e,%xmm0,%xmm0
pshuflw $0x1b,%xmm0,%xmm0
pshufhw $0x1b,%xmm0,%xmm0
packuswb %xmm2,%xmm0
mov    -0x38(%rbp),%rax
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %ebx,%edi
movdqu -0xf(%rax,%rdi,1),%xmm1
psubb  %xmm0,%xmm1
movdqu %xmm1,-0xf(%rax,%rdi,1)
add    $0xfffffffffffffff0,%rbx
add    $0xfffffffffffffff0,%rsi
jne    15c0 <Varianta_C+0x480>
cmp    %rcx,%r9
mov    -0x40(%rbp),%r12
mov    %r11d,%ebx
je     16a0 <Varianta_C+0x560>
test   $0xc,%r9b
je     1673 <Varianta_C+0x533>
lea    (%rdx,%r15,1),%edi
add    $0xffffffff,%edi
add    $0x1,%rdi
add    $0xc,%r10
and    %rdi,%r10
sub    %r10,%r12
movd   %r8d,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
lea    (%rdx,%r15,1),%esi
add    $0x1,%esi
mov    %rcx,%rdx
not    %rdx
add    %rsi,%rdx
mov    %rdi,%rsi
and    $0xfffffffffffffffc,%rsi
sub    %rsi,%rcx
pxor   %xmm1,%xmm1
punpcklbw %xmm1,%xmm0
pshuflw $0x1b,%xmm0,%xmm0
packuswb %xmm0,%xmm0
mov    -0x38(%rbp),%rax
nopl   0x0(%rax,%rax,1)
mov    %edx,%esi
movd   -0x3(%rax,%rsi,1),%xmm1
psubb  %xmm0,%xmm1
movd   %xmm1,-0x3(%rax,%rsi,1)
add    $0xfffffffffffffffc,%rdx
add    $0x4,%rcx
jne    1650 <Varianta_C+0x510>
cmp    %r10,%rdi
jne    1676 <Varianta_C+0x536>
jmp    16a0 <Varianta_C+0x560>
sub    %rcx,%r12
lea    0x1(%r12),%eax
add    $0xffffffff,%r12d
add    -0x38(%rbp),%r12
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
sub    %bl,(%r12)
add    $0xffffffff,%eax
add    $0xffffffffffffffff,%r12
cmp    $0x2,%eax
jg     1690 <Varianta_C+0x550>
lea    0x995(%rip),%rdi
mov    -0x98(%rbp),%rsi
call   1050 <pridej_retezec@plt>
mov    $0x3c,%edi
mov    %rax,%rsi
call   1060 <pridej_znak@plt>
mov    %ebx,%ecx
neg    %cl
movsbl %cl,%edi
mov    %rax,%rsi
call   1040 <opakuj@plt>
mov    %ebx,%r12d
cmp    %r15d,%r13d
je     1723 <Varianta_C+0x5e3>
mov    -0x88(%rbp),%rcx
add    %r15d,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    -0x38(%rbp),%rdx
lea    (%rdx,%rcx,1),%r14
add    $0xffffffffffffffff,%r14
mov    %r15,%rcx
mov    %r13d,%r15d
sub    %ecx,%r15d
xor    %ebx,%ebx
xchg   %ax,%ax
mov    $0x3c,%edi
mov    %rax,%rsi
call   1060 <pridej_znak@plt>
movsbl (%r14,%rbx,1),%edi
mov    %rax,%rsi
call   1040 <opakuj@plt>
add    $0xffffffffffffffff,%rbx
cmp    %ebx,%r15d
jne    1700 <Varianta_C+0x5c0>
test   %r12d,%r12d
je     174c <Varianta_C+0x60c>
lea    0x911(%rip),%rdi
mov    %rax,%rsi
call   1050 <pridej_retezec@plt>
movsbl %r12b,%edi
mov    %rax,%rsi
call   1040 <opakuj@plt>
lea    0x8f9(%rip),%rdi
jmp    1753 <Varianta_C+0x613>
lea    0x8fb(%rip),%rdi
mov    %rax,%rsi
call   1050 <pridej_retezec@plt>
mov    -0xa0(%rbp),%r14
mov    -0x50(%rbp),%r15
xor    %ecx,%ecx
test   %r12d,%r12d
setne  %cl
sub    %ecx,%r13d
js     1795 <Varianta_C+0x655>
je     17a2 <Varianta_C+0x662>
cs nopw 0x0(%rax,%rax,1)
nop
mov    $0x3e,%edi
mov    %rax,%rsi
call   1060 <pridej_znak@plt>
add    $0xffffffff,%r13d
jne    1780 <Varianta_C+0x640>
jmp    17a2 <Varianta_C+0x662>
mov    $0x3c,%edi
mov    %rax,%rsi
call   1060 <pridej_znak@plt>
movsbl -0x80(%rbp),%edi
mov    %rax,%rsi
call   1040 <opakuj@plt>
mov    $0x5b,%edi
mov    %rax,%rsi
call   1060 <pridej_znak@plt>
test   %r15d,%r15d
je     1833 <Varianta_C+0x6f3>
mov    %r14,%rbx
mov    -0x78(%rbp),%r12
nopw   0x0(%rax,%rax,1)
mov    $0x3c,%edi
mov    %rax,%rsi
call   1060 <pridej_znak@plt>
movsbl -0x1(%r12,%rbx,1),%edi
mov    %rax,%rsi
call   1040 <opakuj@plt>
add    $0xffffffffffffffff,%rbx
jne    17d0 <Varianta_C+0x690>
lea    0x863(%rip),%rdi
mov    %rax,%rsi
call   1050 <pridej_retezec@plt>
test   %r15d,%r15d
je     1842 <Varianta_C+0x702>
mov    -0xa8(%rbp),%rbx
nopl   0x0(%rax)
mov    $0x3c,%edi
mov    %rax,%rsi
call   1060 <pridej_znak@plt>
movsbl -0x1(%rbx,%r14,1),%edi
mov    %rax,%rsi
call   1040 <opakuj@plt>
add    $0xffffffffffffffff,%r14
jne    1810 <Varianta_C+0x6d0>
jmp    1842 <Varianta_C+0x702>
lea    0x821(%rip),%rdi
mov    %rax,%rsi
call   1050 <pridej_retezec@plt>
lea    0x819(%rip),%rdi
mov    %rax,%rsi
call   1050 <pridej_retezec@plt>
movb   $0x0,(%rax)
lea    -0x28(%rbp),%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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