#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 */
typedef int /*<<< orphan*/ retezec;

/* Variables and functions */
char *Varianta_A(char *, char *, int, int);
int /*<<< orphan*/ *fgets(char *, int, int /*<<< orphan*/);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, ...);
int /*<<< orphan*/ printf(char *, char *);
int /*<<< orphan*/ putchar(char);
int /*<<< orphan*/ stderr;
int /*<<< orphan*/ stdin;
int main() {
  char retezec[2048];
  char vysledek[2048 * 20];
  fprintf(stderr, "Ukonceni v linuxu ctrl+d, pokud se nema prevadet ENTER tak "
                  "prvne stisknete ESC.\n");
  while (1) {
    fprintf(stderr, "Napis neco...\n");
    if (fgets(retezec, sizeof(retezec) - 1, stdin) == NULL)
      return -1;
    int nasobek, posun;
    int best_n, best_p, best_d = 2048 * 20;
    for (nasobek = 7; nasobek <= 13; nasobek++) {
      for (posun = -4; posun <= 4; posun++) {
        char *pocatek = &vysledek[0];
        pocatek = Varianta_A(&retezec[0], pocatek, nasobek, posun);
        if (pocatek && pocatek - &vysledek[0] < best_d) {
          best_d = pocatek - &vysledek[0];
          best_n = nasobek;
          best_p = posun;
        }
      }
    }
    fprintf(stderr, "nasobek: %i posun %i delka %i\n", best_n, best_p, best_d);
    Varianta_A(&retezec[0], &vysledek[0], best_n, best_p);
    printf("%s", &vysledek[0]);
    putchar('\n');
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa830,%rsp
movl   $0x0,-0x4(%rbp)
mov    0x2e6f(%rip),%rax
mov    (%rax),%edi
lea    0xe8e(%rip),%rsi
mov    $0x0,%al
call   1060 <fprintf@plt>
mov    0x2e58(%rip),%rax
mov    (%rax),%edi
lea    0xec8(%rip),%rsi
mov    $0x0,%al
call   1060 <fprintf@plt>
lea    -0x810(%rbp),%rdi
mov    0x2e4a(%rip),%rax
mov    (%rax),%edx
mov    $0x7ff,%esi
call   1050 <fgets@plt>
cmp    $0x0,%rax
jne    11c2 <main+0x72>
mov    $0xffffffff,%eax
add    $0xa830,%rsp
pop    %rbp
ret
movl   $0xa000,-0xa824(%rbp)
movl   $0x7,-0xa814(%rbp)
cmpl   $0xd,-0xa814(%rbp)
jg     12be <main+0x16e>
movl   $0xfffffffc,-0xa818(%rbp)
ff ff ff
cmpl   $0x4,-0xa818(%rbp)
jg     12a5 <main+0x155>
lea    -0xa810(%rbp),%rax
mov    %rax,-0xa830(%rbp)
lea    -0x810(%rbp),%rdi
mov    -0xa830(%rbp),%rsi
mov    -0xa814(%rbp),%edx
mov    -0xa818(%rbp),%ecx
call   1070 <Varianta_A@plt>
mov    %rax,-0xa830(%rbp)
cmpq   $0x0,-0xa830(%rbp)
je     128c <main+0x13c>
mov    -0xa830(%rbp),%rax
lea    -0xa810(%rbp),%rcx
sub    %rcx,%rax
movslq -0xa824(%rbp),%rcx
cmp    %rcx,%rax
jge    128c <main+0x13c>
mov    -0xa830(%rbp),%rax
lea    -0xa810(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,-0xa824(%rbp)
mov    -0xa814(%rbp),%eax
mov    %eax,-0xa81c(%rbp)
mov    -0xa818(%rbp),%eax
mov    %eax,-0xa820(%rbp)
jmp    1291 <main+0x141>
mov    -0xa818(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa818(%rbp)
jmp    11ed <main+0x9d>
jmp    12aa <main+0x15a>
mov    -0xa814(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa814(%rbp)
jmp    11d6 <main+0x86>
mov    0x2d13(%rip),%rax
mov    (%rax),%edi
mov    -0xa81c(%rbp),%edx
mov    -0xa820(%rbp),%ecx
mov    -0xa824(%rbp),%r8d
lea    0xd7f(%rip),%rsi
mov    $0x0,%al
call   1060 <fprintf@plt>
lea    -0x810(%rbp),%rdi
lea    -0xa810(%rbp),%rsi
mov    -0xa81c(%rbp),%edx
mov    -0xa820(%rbp),%ecx
call   1070 <Varianta_A@plt>
lea    -0xa810(%rbp),%rsi
lea    0xd6a(%rip),%rdi
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
jmp    1179 <main+0x29>

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xa808,%rsp
mov    0x2e70(%rip),%rbx
mov    (%rbx),%edi
lea    0xe8f(%rip),%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
mov    (%rbx),%edi
lea    0xed0(%rip),%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
mov    0x2e59(%rip),%rax
mov    (%rax),%edx
mov    %rsp,%rdi
mov    $0x7ff,%esi
call   1050 <fgets@plt>
test   %rax,%rax
je     1405 <main+0x2b5>
mov    $0x7,%r15d
mov    $0xa000,%r13d
mov    %rsp,%r14
lea    0x800(%rsp),%rbx
jmp    11ce <main+0x7e>
add    $0x1,%r15d
cmp    $0xe,%r15d
je     1380 <main+0x230>
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %r15d,%edx
mov    $0xfffffffc,%ecx
call   1070 <Varianta_A@plt>
test   %rax,%rax
je     11fc <main+0xac>
sub    %rbx,%rax
movslq %r13d,%rcx
cmp    %rcx,%rax
jge    11fc <main+0xac>
mov    $0xfffffffc,%ebp
mov    %r15d,%r12d
mov    %eax,%r13d
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %r15d,%edx
mov    $0xfffffffd,%ecx
call   1070 <Varianta_A@plt>
test   %rax,%rax
je     122a <main+0xda>
sub    %rbx,%rax
movslq %r13d,%rcx
cmp    %rcx,%rax
jge    122a <main+0xda>
mov    $0xfffffffd,%ebp
mov    %r15d,%r12d
mov    %eax,%r13d
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %r15d,%edx
mov    $0xfffffffe,%ecx
call   1070 <Varianta_A@plt>
test   %rax,%rax
je     1258 <main+0x108>
sub    %rbx,%rax
movslq %r13d,%rcx
cmp    %rcx,%rax
jge    1258 <main+0x108>
mov    $0xfffffffe,%ebp
mov    %r15d,%r12d
mov    %eax,%r13d
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %r15d,%edx
mov    $0xffffffff,%ecx
call   1070 <Varianta_A@plt>
test   %rax,%rax
je     1286 <main+0x136>
sub    %rbx,%rax
movslq %r13d,%rcx
cmp    %rcx,%rax
jge    1286 <main+0x136>
mov    $0xffffffff,%ebp
mov    %r15d,%r12d
mov    %eax,%r13d
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %r15d,%edx
xor    %ecx,%ecx
call   1070 <Varianta_A@plt>
test   %rax,%rax
je     12ae <main+0x15e>
sub    %rbx,%rax
movslq %r13d,%rcx
cmp    %rcx,%rax
jge    12ae <main+0x15e>
xor    %ebp,%ebp
mov    %r15d,%r12d
mov    %eax,%r13d
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %r15d,%edx
mov    $0x1,%ecx
call   1070 <Varianta_A@plt>
test   %rax,%rax
je     12dc <main+0x18c>
sub    %rbx,%rax
movslq %r13d,%rcx
cmp    %rcx,%rax
jge    12dc <main+0x18c>
mov    $0x1,%ebp
mov    %r15d,%r12d
mov    %eax,%r13d
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %r15d,%edx
mov    $0x2,%ecx
call   1070 <Varianta_A@plt>
test   %rax,%rax
je     130a <main+0x1ba>
sub    %rbx,%rax
movslq %r13d,%rcx
cmp    %rcx,%rax
jge    130a <main+0x1ba>
mov    $0x2,%ebp
mov    %r15d,%r12d
mov    %eax,%r13d
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %r15d,%edx
mov    $0x3,%ecx
call   1070 <Varianta_A@plt>
test   %rax,%rax
je     1338 <main+0x1e8>
sub    %rbx,%rax
movslq %r13d,%rcx
cmp    %rcx,%rax
jge    1338 <main+0x1e8>
mov    $0x3,%ebp
mov    %r15d,%r12d
mov    %eax,%r13d
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %r15d,%edx
mov    $0x4,%ecx
call   1070 <Varianta_A@plt>
test   %rax,%rax
je     11c0 <main+0x70>
sub    %rbx,%rax
movslq %r13d,%rcx
cmp    %rcx,%rax
jge    11c0 <main+0x70>
mov    $0x4,%ebp
mov    %r15d,%r12d
mov    %eax,%r13d
jmp    11c0 <main+0x70>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x2c51(%rip),%r15
mov    (%r15),%edi
lea    0xccf(%rip),%rsi
mov    %r12d,%edx
mov    %ebp,%ecx
mov    %r13d,%r8d
xor    %eax,%eax
call   1060 <fprintf@plt>
mov    %r14,%rdi
mov    %rbx,%rsi
mov    %r12d,%edx
mov    %ebp,%ecx
call   1070 <Varianta_A@plt>
lea    0xcc8(%rip),%rdi
mov    %rbx,%rsi
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    (%r15),%edi
lea    0xc7e(%rip),%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
mov    0x2c07(%rip),%rax
mov    (%rax),%edx
mov    %r14,%rdi
mov    $0x7ff,%esi
call   1050 <fgets@plt>
mov    $0xa000,%r13d
mov    $0x7,%r15d
test   %rax,%rax
jne    11ce <main+0x7e>
mov    $0xffffffff,%eax
add    $0xa808,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@stderr = global i32 0
@.str = [81 x i8] c"Ukonceni v linuxu ctrl+d, pokud se nema prevadet ENTER tak prvne stisknete ESC.\0A\00"
@.str.1 = [15 x i8] c"Napis neco...\0A\00"
@stdin = global i32 0
@.str.2 = [31 x i8] c"nasobek: %i posun %i delka %i\0A\00"
@.str.3 = [3 x i8] c"%s\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [2048 x i8]
%3 = alloca [40960 x i8]
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i8*
store i32 0, i32* %1
%10 = load i32, i32* @stderr
%11 = call i32 (i32, i8*, ...) @fprintf(i32 %10, i8* getelementptr inbounds ([81 x i8], [81 x i8]* @.str, i64 0, i64 0))
br label %12
12: ; preds = %0, %63
%13 = load i32, i32* @stderr
%14 = call i32 (i32, i8*, ...) @fprintf(i32 %13, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.1, i64 0, i64 0))
%15 = getelementptr inbounds [2048 x i8], [2048 x i8]* %2, i64 0, i64 0
%16 = load i32, i32* @stdin
%17 = call i32* @fgets(i8* %15, i32 2047, i32 %16)
%18 = icmp eq i32* %17, null
br i1 %18, label %19, label %20
19: ; preds = %12
ret i32 -1
20: ; preds = %12
store i32 40960, i32* %8
store i32 7, i32* %4
br label %21
21: ; preds = %60, %20
%22 = load i32, i32* %4
%23 = icmp sle i32 %22, 13
br i1 %23, label %24, label %63
24: ; preds = %21
store i32 -4, i32* %5
br label %25
25: ; preds = %56, %24
%26 = load i32, i32* %5
%27 = icmp sle i32 %26, 4
br i1 %27, label %28, label %59
28: ; preds = %25
%29 = getelementptr inbounds [40960 x i8], [40960 x i8]* %3, i64 0, i64 0
store i8* %29, i8** %9
%30 = getelementptr inbounds [2048 x i8], [2048 x i8]* %2, i64 0, i64 0
%31 = load i8*, i8** %9
%32 = load i32, i32* %4
%33 = load i32, i32* %5
%34 = call i8* @Varianta_A(i8* %30, i8* %31, i32 %32, i32 %33)
store i8* %34, i8** %9
%35 = load i8*, i8** %9
%36 = icmp ne i8* %35, null
br i1 %36, label %37, label %55
37: ; preds = %28
%38 = load i8*, i8** %9
%39 = getelementptr inbounds [40960 x i8], [40960 x i8]* %3, i64 0, i64 0
%40 = ptrtoint i8* %38 to i64
%41 = ptrtoint i8* %39 to i64
%42 = sub i64 %40, %41
%43 = load i32, i32* %8
%44 = sext i32 %43 to i64
%45 = icmp slt i64 %42, %44
br i1 %45, label %46, label %55
46: ; preds = %37
%47 = load i8*, i8** %9
%48 = getelementptr inbounds [40960 x i8], [40960 x i8]* %3, i64 0, i64 0
%49 = ptrtoint i8* %47 to i64
%50 = ptrtoint i8* %48 to i64
%51 = sub i64 %49, %50
%52 = trunc i64 %51 to i32
store i32 %52, i32* %8
%53 = load i32, i32* %4
store i32 %53, i32* %6
%54 = load i32, i32* %5
store i32 %54, i32* %7
br label %55
55: ; preds = %46, %37, %28
br label %56
56: ; preds = %55
%57 = load i32, i32* %5
%58 = add nsw i32 %57, 1
store i32 %58, i32* %5
br label %25
59: ; preds = %25
br label %60
60: ; preds = %59
%61 = load i32, i32* %4
%62 = add nsw i32 %61, 1
store i32 %62, i32* %4
br label %21
63: ; preds = %21
%64 = load i32, i32* @stderr
%65 = load i32, i32* %6
%66 = load i32, i32* %7
%67 = load i32, i32* %8
%68 = call i32 (i32, i8*, ...) @fprintf(i32 %64, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.2, i64 0, i64 0), i32 %65, i32 %66, i32 %67)
%69 = getelementptr inbounds [2048 x i8], [2048 x i8]* %2, i64 0, i64 0
%70 = getelementptr inbounds [40960 x i8], [40960 x i8]* %3, i64 0, i64 0
%71 = load i32, i32* %6
%72 = load i32, i32* %7
%73 = call i8* @Varianta_A(i8* %69, i8* %70, i32 %71, i32 %72)
%74 = getelementptr inbounds [40960 x i8], [40960 x i8]* %3, i64 0, i64 0
%75 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* %74)
%76 = call i32 @putchar(i8 signext 10)
br label %12
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [81 x i8] c"Ukonceni v linuxu ctrl+d, pokud se nema prevadet ENTER tak prvne stisknete ESC.\0A\00"
@.str.1 = [15 x i8] c"Napis neco...\0A\00"
@stdin = global i32 0
@.str.2 = [31 x i8] c"nasobek: %i posun %i delka %i\0A\00"
@.str.3 = [3 x i8] c"%s\00"
define i32 @main() {
%1 = alloca [2048 x i8]
%2 = alloca [40960 x i8]
%3 = getelementptr inbounds [2048 x i8], [2048 x i8]* %1, i64 0, i64 0
%4 = getelementptr inbounds [40960 x i8], [40960 x i8]* %2, i64 0, i64 0
%5 = load i32, i32* @stderr
%6 = tail call i32 (i32, i8*, ...) @fprintf(i32 %5, i8* getelementptr inbounds ([81 x i8], [81 x i8]* @.str, i64 0, i64 0))
%7 = load i32, i32* @stderr
%8 = call i32 (i32, i8*, ...) @fprintf(i32 %7, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.1, i64 0, i64 0))
%9 = load i32, i32* @stdin
%10 = call i32* @fgets(i8* %3, i32 2047, i32 %9)
%11 = icmp eq i32* %10, null
br i1 %11, label %14, label %12
12: ; preds = %0
%13 = ptrtoint [40960 x i8]* %2 to i64
br label %15
14: ; preds = %142, %0
ret i32 -1
15: ; preds = %139, %12
%16 = phi i32 [ 40960, %12 ], [ %140, %139 ]
%17 = phi i32 [ undef, %12 ], [ %135, %139 ]
%18 = phi i32 [ undef, %12 ], [ %134, %139 ]
%19 = phi i32 [ 7, %12 ], [ %141, %139 ]
%20 = call i8* @Varianta_A(i8* %3, i8* %4, i32 %19, i32 -4)
%21 = icmp eq i8* %20, null
br i1 %21, label %29, label %22
22: ; preds = %15
%23 = ptrtoint i8* %20 to i64
%24 = sub i64 %23, %13
%25 = sext i32 %16 to i64
%26 = icmp slt i64 %24, %25
br i1 %26, label %27, label %29
27: ; preds = %22
%28 = trunc i64 %24 to i32
br label %29
29: ; preds = %27, %22, %15
%30 = phi i32 [ %19, %27 ], [ %18, %22 ], [ %18, %15 ]
%31 = phi i32 [ -4, %27 ], [ %17, %22 ], [ %17, %15 ]
%32 = phi i32 [ %28, %27 ], [ %16, %22 ], [ %16, %15 ]
%33 = call i8* @Varianta_A(i8* %3, i8* %4, i32 %19, i32 -3)
%34 = icmp eq i8* %33, null
br i1 %34, label %42, label %35
35: ; preds = %29
%36 = ptrtoint i8* %33 to i64
%37 = sub i64 %36, %13
%38 = sext i32 %32 to i64
%39 = icmp slt i64 %37, %38
br i1 %39, label %40, label %42
40: ; preds = %35
%41 = trunc i64 %37 to i32
br label %42
42: ; preds = %40, %35, %29
%43 = phi i32 [ %19, %40 ], [ %30, %35 ], [ %30, %29 ]
%44 = phi i32 [ -3, %40 ], [ %31, %35 ], [ %31, %29 ]
%45 = phi i32 [ %41, %40 ], [ %32, %35 ], [ %32, %29 ]
%46 = call i8* @Varianta_A(i8* %3, i8* %4, i32 %19, i32 -2)
%47 = icmp eq i8* %46, null
br i1 %47, label %55, label %48
48: ; preds = %42
%49 = ptrtoint i8* %46 to i64
%50 = sub i64 %49, %13
%51 = sext i32 %45 to i64
%52 = icmp slt i64 %50, %51
br i1 %52, label %53, label %55
53: ; preds = %48
%54 = trunc i64 %50 to i32
br label %55
55: ; preds = %53, %48, %42
%56 = phi i32 [ %19, %53 ], [ %43, %48 ], [ %43, %42 ]
%57 = phi i32 [ -2, %53 ], [ %44, %48 ], [ %44, %42 ]
%58 = phi i32 [ %54, %53 ], [ %45, %48 ], [ %45, %42 ]
%59 = call i8* @Varianta_A(i8* %3, i8* %4, i32 %19, i32 -1)
%60 = icmp eq i8* %59, null
br i1 %60, label %68, label %61
61: ; preds = %55
%62 = ptrtoint i8* %59 to i64
%63 = sub i64 %62, %13
%64 = sext i32 %58 to i64
%65 = icmp slt i64 %63, %64
br i1 %65, label %66, label %68
66: ; preds = %61
%67 = trunc i64 %63 to i32
br label %68
68: ; preds = %66, %61, %55
%69 = phi i32 [ %19, %66 ], [ %56, %61 ], [ %56, %55 ]
%70 = phi i32 [ -1, %66 ], [ %57, %61 ], [ %57, %55 ]
%71 = phi i32 [ %67, %66 ], [ %58, %61 ], [ %58, %55 ]
%72 = call i8* @Varianta_A(i8* %3, i8* %4, i32 %19, i32 0)
%73 = icmp eq i8* %72, null
br i1 %73, label %81, label %74
74: ; preds = %68
%75 = ptrtoint i8* %72 to i64
%76 = sub i64 %75, %13
%77 = sext i32 %71 to i64
%78 = icmp slt i64 %76, %77
br i1 %78, label %79, label %81
79: ; preds = %74
%80 = trunc i64 %76 to i32
br label %81
81: ; preds = %79, %74, %68
%82 = phi i32 [ %19, %79 ], [ %69, %74 ], [ %69, %68 ]
%83 = phi i32 [ 0, %79 ], [ %70, %74 ], [ %70, %68 ]
%84 = phi i32 [ %80, %79 ], [ %71, %74 ], [ %71, %68 ]
%85 = call i8* @Varianta_A(i8* %3, i8* %4, i32 %19, i32 1)
%86 = icmp eq i8* %85, null
br i1 %86, label %94, label %87
87: ; preds = %81
%88 = ptrtoint i8* %85 to i64
%89 = sub i64 %88, %13
%90 = sext i32 %84 to i64
%91 = icmp slt i64 %89, %90
br i1 %91, label %92, label %94
92: ; preds = %87
%93 = trunc i64 %89 to i32
br label %94
94: ; preds = %92, %87, %81
%95 = phi i32 [ %19, %92 ], [ %82, %87 ], [ %82, %81 ]
%96 = phi i32 [ 1, %92 ], [ %83, %87 ], [ %83, %81 ]
%97 = phi i32 [ %93, %92 ], [ %84, %87 ], [ %84, %81 ]
%98 = call i8* @Varianta_A(i8* %3, i8* %4, i32 %19, i32 2)
%99 = icmp eq i8* %98, null
br i1 %99, label %107, label %100
100: ; preds = %94
%101 = ptrtoint i8* %98 to i64
%102 = sub i64 %101, %13
%103 = sext i32 %97 to i64
%104 = icmp slt i64 %102, %103
br i1 %104, label %105, label %107
105: ; preds = %100
%106 = trunc i64 %102 to i32
br label %107
107: ; preds = %105, %100, %94
%108 = phi i32 [ %19, %105 ], [ %95, %100 ], [ %95, %94 ]
%109 = phi i32 [ 2, %105 ], [ %96, %100 ], [ %96, %94 ]
%110 = phi i32 [ %106, %105 ], [ %97, %100 ], [ %97, %94 ]
%111 = call i8* @Varianta_A(i8* %3, i8* %4, i32 %19, i32 3)
%112 = icmp eq i8* %111, null
br i1 %112, label %120, label %113
113: ; preds = %107
%114 = ptrtoint i8* %111 to i64
%115 = sub i64 %114, %13
%116 = sext i32 %110 to i64
%117 = icmp slt i64 %115, %116
br i1 %117, label %118, label %120
118: ; preds = %113
%119 = trunc i64 %115 to i32
br label %120
120: ; preds = %118, %113, %107
%121 = phi i32 [ %19, %118 ], [ %108, %113 ], [ %108, %107 ]
%122 = phi i32 [ 3, %118 ], [ %109, %113 ], [ %109, %107 ]
%123 = phi i32 [ %119, %118 ], [ %110, %113 ], [ %110, %107 ]
%124 = call i8* @Varianta_A(i8* %3, i8* %4, i32 %19, i32 4)
%125 = icmp eq i8* %124, null
br i1 %125, label %133, label %126
126: ; preds = %120
%127 = ptrtoint i8* %124 to i64
%128 = sub i64 %127, %13
%129 = sext i32 %123 to i64
%130 = icmp slt i64 %128, %129
br i1 %130, label %131, label %133
131: ; preds = %126
%132 = trunc i64 %128 to i32
br label %133
133: ; preds = %131, %126, %120
%134 = phi i32 [ %19, %131 ], [ %121, %126 ], [ %121, %120 ]
%135 = phi i32 [ 4, %131 ], [ %122, %126 ], [ %122, %120 ]
%136 = phi i32 [ %132, %131 ], [ %123, %126 ], [ %123, %120 ]
%137 = add nuw nsw i32 %19, 1
%138 = icmp eq i32 %137, 14
br i1 %138, label %142, label %139
139: ; preds = %133, %142
%140 = phi i32 [ %136, %133 ], [ 40960, %142 ]
%141 = phi i32 [ %137, %133 ], [ 7, %142 ]
br label %15
142: ; preds = %133
%143 = load i32, i32* @stderr
%144 = call i32 (i32, i8*, ...) @fprintf(i32 %143, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.2, i64 0, i64 0), i32 %134, i32 %135, i32 %136)
%145 = call i8* @Varianta_A(i8* %3, i8* %4, i32 %134, i32 %135)
%146 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* %4)
%147 = call i32 @putchar(i8 signext 10)
%148 = load i32, i32* @stderr
%149 = call i32 (i32, i8*, ...) @fprintf(i32 %148, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.1, i64 0, i64 0))
%150 = load i32, i32* @stdin
%151 = call i32* @fgets(i8* %3, i32 2047, i32 %150)
%152 = icmp eq i32* %151, null
br i1 %152, label %14, label %139
}