#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 */
double atan(int);
double log(int);
int pow(double, int);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, ...);
int main() {
  double G, F, Y, a, x1, x2, b, min_value, max_value;
  int j;
  char r;
  int pr = 1;
nachalo:
  printf("%s", "Введите  x1: ");
  scanf("%lf", &x1);
  printf("%s", "Введите x2 ");
  scanf("%lf", &x2);
  printf("%s", "Введите a: ");
  scanf("%lf", &a);
  printf("%s", "Введите параметр шага  ");
  scanf("%lf", &b);
  double mas[100];
  j = 0;
  max_value = 0;
  min_value = 0;
  printf("Введите букву выражения, которое хотите вычислить - G,F,Y) \n");
  scanf("%s", &r);
  switch (r) {
  case 'G':
    while (x1 <= x2) {
      if ((45 * (pow(a, 2)) - 29 * a * x1 + 4 * (pow(x1, 2))) >= 0.000001 &&
          (45 * (pow(a, 2)) - 29 * a * x1 + 4 * (pow(x1, 2)) <= -0.000001)) {
        G = -(16 * ((pow(a, 2) + 24 * a * x1 - 27 * (pow(x1, 2))))) /
            (45 * (pow(a, 2)) - 29 * a * x1 + 4 * (pow(x1, 2)));
        printf("X = %.3lf \t| Y = %.3lf\n", x1, G);
        x1 = x1 + b;
        mas[j] = G;
        if (j <= 0.000001 && j >= -0.000001) {
          max_value = G;
          min_value = G;
        }
        if (G > max_value)
          max_value = mas[j];
        if (G < min_value)
          min_value = mas[j];
        j += 1;
      } else {
        printf("На ноль делить нельзя :)");
        return 0;
      }
    }
    printf(" Максимальное значение  = %9.3lf\n Минимальное значение = %9.3lf\n",
           max_value, min_value);
    break;
  case 'F':
    while (x1 <= x2) {
      F = -(atan(10 * (a * a) + 13 * a * x1 - 30 * (x1 * x1)));
      printf("X = %.3lf \t| Y = %.3lf\n", x1, F);
      x1 = x1 + b;
      mas[j] = F;
      if (j <= 0.000001 && j >= -0.000001) {
        max_value = F;
        min_value = F;
      }
      if (F > max_value)
        max_value = mas[j];
      if (F < min_value)
        min_value = mas[j];
      j += 1;
    }
    printf(" Максимальное значение  = %9.3lf\n Минимальное значение = %9.3lf\n",
           max_value, min_value);
    break;
  case 'Y':
    while (x1 <= x2) {
      Y = (log(2 * pow(a, 2) + 19 * a * x1 + 9 * pow(x1, 2) + 1)) / log(10);
      printf("X = %.3lf \t| Y = %.3lf\n", x1, Y);
      x1 = x1 + b;
      mas[j] = Y;
      if (j <= 0.000001 && j >= -0.000001) {
        max_value = Y;
        min_value = Y;
      }
      if (Y > max_value)
        max_value = mas[j];
      if (Y < min_value)
        min_value = mas[j];
      j += 1;
    }
    printf(" Максимальное значение  = %9.3lf\n Минимальное значение = %9.3lf\n",
           max_value, min_value);
    break;
  default:
    printf("ne verno vvedena function \n");
  }
  printf("Вычислим еще раз? (1-да) \n");
  scanf("%i", &pr);
  if (pr == 1)
    goto nachalo;
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x3d0,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x1,-0x5c(%rbp)
lea    0xee0(%rip),%rdi
mov    %rdi,-0x390(%rbp)
lea    0xed5(%rip),%rsi
xor    %eax,%eax
mov    %al,-0x385(%rbp)
call   1030 <printf@plt>
mov    -0x385(%rbp),%al
lea    0xed0(%rip),%rdi
mov    %rdi,-0x398(%rbp)
lea    -0x30(%rbp),%rsi
call   1050 <scanf@plt>
mov    -0x390(%rbp),%rdi
mov    -0x385(%rbp),%al
lea    0xeb0(%rip),%rsi
call   1030 <printf@plt>
mov    -0x398(%rbp),%rdi
mov    -0x385(%rbp),%al
lea    -0x38(%rbp),%rsi
call   1050 <scanf@plt>
mov    -0x390(%rbp),%rdi
mov    -0x385(%rbp),%al
lea    0xe94(%rip),%rsi
call   1030 <printf@plt>
mov    -0x398(%rbp),%rdi
mov    -0x385(%rbp),%al
lea    -0x28(%rbp),%rsi
call   1050 <scanf@plt>
mov    -0x390(%rbp),%rdi
mov    -0x385(%rbp),%al
lea    0xe78(%rip),%rsi
call   1030 <printf@plt>
mov    -0x398(%rbp),%rdi
mov    -0x385(%rbp),%al
lea    -0x40(%rbp),%rsi
call   1050 <scanf@plt>
mov    -0x385(%rbp),%al
movl   $0x0,-0x54(%rbp)
movq   $0x0,-0x50(%rbp)
movq   $0x0,-0x48(%rbp)
lea    0xe64(%rip),%rdi
call   1030 <printf@plt>
mov    -0x390(%rbp),%rdi
mov    -0x385(%rbp),%al
lea    -0x55(%rbp),%rsi
call   1050 <scanf@plt>
movsbl -0x55(%rbp),%eax
mov    %eax,-0x384(%rbp)
sub    $0x46,%eax
je     15e4 <main+0x494>
jmp    128c <main+0x13c>
mov    -0x384(%rbp),%eax
sub    $0x47,%eax
je     12b4 <main+0x164>
jmp    12a0 <main+0x150>
mov    -0x384(%rbp),%eax
sub    $0x59,%eax
je     1756 <main+0x606>
jmp    18f2 <main+0x7a2>
jmp    12b9 <main+0x169>
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     15c7 <main+0x477>
movsd  -0x28(%rbp),%xmm0
mov    $0x2,%edi
call   1070 <pow@plt>
imul   $0x2d,%eax,%eax
cvtsi2sd %eax,%xmm1
movsd  0xd4d(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x3a0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
mov    $0x2,%edi
call   1070 <pow@plt>
movsd  -0x3a0(%rbp),%xmm0
ff
shl    $0x2,%eax
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
movsd  0xcba(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     15a8 <main+0x458>
movsd  -0x28(%rbp),%xmm0
mov    $0x2,%edi
call   1070 <pow@plt>
imul   $0x2d,%eax,%eax
cvtsi2sd %eax,%xmm1
movsd  0xcca(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x3a8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
mov    $0x2,%edi
call   1070 <pow@plt>
movsd  -0x3a8(%rbp),%xmm1
ff
shl    $0x2,%eax
cvtsi2sd %eax,%xmm0
addsd  %xmm0,%xmm1
movsd  0xc4f(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     15a8 <main+0x458>
movsd  -0x28(%rbp),%xmm0
mov    $0x2,%edi
call   1070 <pow@plt>
cvtsi2sd %eax,%xmm1
movsd  0xc5a(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x3c0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
mov    $0x2,%edi
call   1070 <pow@plt>
movsd  -0x3c0(%rbp),%xmm1
ff
imul   $0x1b,%eax,%eax
cvtsi2sd %eax,%xmm0
subsd  %xmm0,%xmm1
movsd  0xc0e(%rip),%xmm0
mulsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x3b0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
mov    $0x2,%edi
call   1070 <pow@plt>
imul   $0x2d,%eax,%eax
cvtsi2sd %eax,%xmm1
movsd  0xbc5(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x3b8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
mov    $0x2,%edi
call   1070 <pow@plt>
movsd  -0x3b8(%rbp),%xmm1
ff
movsd  -0x3b0(%rbp),%xmm0
ff
shl    $0x2,%eax
cvtsi2sd %eax,%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
lea    0xc3d(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
movsd  -0x30(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x10(%rbp),%xmm0
movslq -0x54(%rbp),%rax
movsd  %xmm0,-0x380(%rbp,%rax,8)
ff ff
cvtsi2sdl -0x54(%rbp),%xmm1
movsd  0xae3(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1552 <main+0x402>
cvtsi2sdl -0x54(%rbp),%xmm0
movsd  0xae4(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1552 <main+0x402>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x10(%rbp),%xmm0
ucomisd -0x50(%rbp),%xmm0
jbe    1574 <main+0x424>
movslq -0x54(%rbp),%rax
movsd  -0x380(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    159a <main+0x44a>
movslq -0x54(%rbp),%rax
movsd  -0x380(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x48(%rbp)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    15c2 <main+0x472>
lea    0xb8e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1936 <main+0x7e6>
jmp    12b9 <main+0x169>
movsd  -0x50(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
lea    0xb90(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
jmp    1900 <main+0x7b0>
jmp    15e9 <main+0x499>
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     1739 <main+0x5e9>
movsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movsd  0xa21(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  0xa07(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x30(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  0x9e5(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <atan@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
lea    0xaac(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
movsd  -0x30(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x18(%rbp),%xmm0
movslq -0x54(%rbp),%rax
movsd  %xmm0,-0x380(%rbp,%rax,8)
ff ff
cvtsi2sdl -0x54(%rbp),%xmm1
movsd  0x952(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     16e3 <main+0x593>
cvtsi2sdl -0x54(%rbp),%xmm0
movsd  0x953(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     16e3 <main+0x593>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x18(%rbp),%xmm0
ucomisd -0x50(%rbp),%xmm0
jbe    1705 <main+0x5b5>
movslq -0x54(%rbp),%rax
movsd  -0x380(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x18(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    172b <main+0x5db>
movslq -0x54(%rbp),%rax
movsd  -0x380(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x48(%rbp)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    15e9 <main+0x499>
movsd  -0x50(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
lea    0xa1e(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
jmp    1900 <main+0x7b0>
jmp    175b <main+0x60b>
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     18d5 <main+0x785>
movsd  -0x28(%rbp),%xmm0
mov    $0x2,%edi
call   1070 <pow@plt>
shl    $0x1,%eax
cvtsi2sd %eax,%xmm1
movsd  0x883(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x3d0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
mov    $0x2,%edi
call   1070 <pow@plt>
movsd  -0x3d0(%rbp),%xmm0
ff
imul   $0x9,%eax,%eax
cvtsi2sd %eax,%xmm1
addsd  %xmm1,%xmm0
movsd  0x837(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1060 <log@plt>
movsd  %xmm0,-0x3c8(%rbp)
ff
mov    $0xa,%edi
call   1060 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x3c8(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
lea    0x910(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
movsd  -0x30(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x20(%rbp),%xmm0
movslq -0x54(%rbp),%rax
movsd  %xmm0,-0x380(%rbp,%rax,8)
ff ff
cvtsi2sdl -0x54(%rbp),%xmm1
movsd  0x7b6(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     187f <main+0x72f>
cvtsi2sdl -0x54(%rbp),%xmm0
movsd  0x7b7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     187f <main+0x72f>
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x20(%rbp),%xmm0
ucomisd -0x50(%rbp),%xmm0
jbe    18a1 <main+0x751>
movslq -0x54(%rbp),%rax
movsd  -0x380(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x20(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    18c7 <main+0x777>
movslq -0x54(%rbp),%rax
movsd  -0x380(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x48(%rbp)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    175b <main+0x60b>
movsd  -0x50(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
lea    0x882(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
jmp    1900 <main+0x7b0>
lea    0x8d7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x8e5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x902(%rip),%rdi
lea    -0x5c(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
cmpl   $0x1,-0x5c(%rbp)
jne    192f <main+0x7df>
jmp    1169 <main+0x19>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x3d0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
movl   $0x1,0x44(%rsp)
lea    0xee3(%rip),%rbx
lea    0xef4(%rip),%r15
lea    0xff0(%rip),%r14
lea    0x17(%rsp),%r12
lea    0xf36(%rip),%r13
jmp    11d6 <main+0x76>
nopl   0x0(%rax)
lea    0x1065(%rip),%rdi
call   1030 <puts@plt>
lea    0x102f(%rip),%rdi
call   1030 <puts@plt>
lea    0xfb9(%rip),%rdi
lea    0x44(%rsp),%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
cmpl   $0x1,0x44(%rsp)
jne    171b <main+0x5bb>
mov    %rbx,%rdi
lea    0xe83(%rip),%rsi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15,%rdi
lea    0x8(%rsp),%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
mov    %rbx,%rdi
lea    0xe7c(%rip),%rsi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15,%rdi
lea    0x38(%rsp),%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
mov    %rbx,%rdi
lea    0xe6f(%rip),%rsi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15,%rdi
lea    0x18(%rsp),%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
mov    %rbx,%rdi
lea    0xe62(%rip),%rsi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15,%rdi
lea    0x48(%rsp),%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
mov    %r14,%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
mov    %r12,%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
movsbl 0x17(%rsp),%eax
cmp    $0x46,%eax
je     13b0 <main+0x250>
cmp    $0x47,%eax
je     13e0 <main+0x280>
cmp    $0x59,%eax
jne    11a0 <main+0x40>
movsd  0x38(%rsp),%xmm0
xorpd  %xmm1,%xmm1
ucomisd 0x8(%rsp),%xmm0
xorpd  %xmm0,%xmm0
jb     13fa <main+0x29a>
xorpd  %xmm0,%xmm0
xor    %ebp,%ebp
xorps  %xmm2,%xmm2
jmp    12d0 <main+0x170>
movapd %xmm1,%xmm0
maxsd  %xmm2,%xmm0
minsd  %xmm4,%xmm1
movsd  0x38(%rsp),%xmm2
ucomisd %xmm3,%xmm2
movapd %xmm1,%xmm2
jb     13fa <main+0x29a>
movsd  %xmm2,0x50(%rsp)
movsd  %xmm0,0x60(%rsp)
movsd  0x18(%rsp),%xmm0
mov    $0x2,%edi
call   1080 <pow@plt>
add    %eax,%eax
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x18(%rsp),%xmm2
mulsd  0xcfd(%rip),%xmm2
movsd  0x8(%rsp),%xmm0
mulsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
movsd  %xmm2,0x20(%rsp)
mov    $0x2,%edi
call   1080 <pow@plt>
lea    (%rax,%rax,8),%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x20(%rsp),%xmm0
addsd  0xccf(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1070 <log@plt>
movsd  %xmm0,0x20(%rsp)
mov    $0xa,%edi
call   1070 <log@plt>
movsd  0x20(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
mov    %r13,%rdi
mov    $0x2,%al
call   1040 <printf@plt>
movsd  0x20(%rsp),%xmm1
movsd  0x8(%rsp),%xmm3
addsd  0x48(%rsp),%xmm3
movsd  %xmm3,0x8(%rsp)
movapd %xmm1,%xmm4
movapd %xmm1,%xmm2
sub    $0x1,%ebp
jb     12b0 <main+0x150>
movsd  0x50(%rsp),%xmm4
movsd  0x60(%rsp),%xmm2
jmp    12b0 <main+0x150>
nopl   0x0(%rax)
movsd  0x8(%rsp),%xmm3
movsd  0x38(%rsp),%xmm1
xorpd  %xmm4,%xmm4
ucomisd %xmm3,%xmm1
xorpd  %xmm0,%xmm0
jae    140d <main+0x2ad>
lea    0xd3f(%rip),%rdi
movapd %xmm4,%xmm1
jmp    1401 <main+0x2a1>
nopw   0x0(%rax,%rax,1)
movsd  0x38(%rsp),%xmm0
xorpd  %xmm1,%xmm1
ucomisd 0x8(%rsp),%xmm0
xorpd  %xmm0,%xmm0
jae    14e3 <main+0x383>
lea    0xd0f(%rip),%rdi
mov    $0x2,%al
call   1040 <printf@plt>
jmp    11ac <main+0x4c>
xorpd  %xmm0,%xmm0
xor    %ebp,%ebp
xorpd  %xmm1,%xmm1
jmp    143c <main+0x2dc>
nopl   0x0(%rax)
movapd %xmm4,%xmm0
maxsd  %xmm2,%xmm0
minsd  %xmm1,%xmm4
movsd  0x38(%rsp),%xmm1
ucomisd %xmm3,%xmm1
movapd %xmm4,%xmm1
jb     13ca <main+0x26a>
movapd %xmm1,0x50(%rsp)
movapd %xmm0,0x60(%rsp)
movsd  0x18(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm1,%xmm2
mulsd  0xbb2(%rip),%xmm1
mulsd  %xmm3,%xmm1
mulsd  0xbae(%rip),%xmm2
addsd  %xmm1,%xmm2
mulsd  %xmm3,%xmm3
mulsd  0xba6(%rip),%xmm3
addsd  %xmm2,%xmm3
cvttsd2si %xmm3,%edi
call   1050 <atan@plt>
movapd %xmm0,%xmm1
xorpd  0xbbd(%rip),%xmm1
movapd %xmm1,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
mov    %r13,%rdi
mov    $0x2,%al
call   1040 <printf@plt>
movapd 0x20(%rsp),%xmm4
movsd  0x8(%rsp),%xmm3
addsd  0x48(%rsp),%xmm3
movsd  %xmm3,0x8(%rsp)
movapd %xmm4,%xmm1
movapd %xmm4,%xmm2
sub    $0x1,%ebp
jb     1420 <main+0x2c0>
movapd 0x50(%rsp),%xmm1
movapd 0x60(%rsp),%xmm2
jmp    1420 <main+0x2c0>
xorpd  %xmm0,%xmm0
xor    %ebp,%ebp
xorps  %xmm2,%xmm2
jmp    1510 <main+0x3b0>
xchg   %ax,%ax
movapd %xmm1,%xmm0
maxsd  %xmm2,%xmm0
minsd  %xmm4,%xmm1
movsd  0x38(%rsp),%xmm2
ucomisd %xmm3,%xmm2
movapd %xmm1,%xmm2
jb     13fa <main+0x29a>
movsd  %xmm2,0x70(%rsp)
movsd  %xmm0,0x50(%rsp)
movsd  0x18(%rsp),%xmm0
mov    $0x2,%edi
call   1080 <pow@plt>
lea    (%rax,%rax,8),%eax
lea    (%rax,%rax,4),%eax
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x8(%rsp),%xmm0
movsd  0x18(%rsp),%xmm3
movsd  0xadb(%rip),%xmm2
mulsd  %xmm2,%xmm3
mulsd  %xmm0,%xmm3
addsd  %xmm1,%xmm3
movsd  %xmm3,0x20(%rsp)
mov    $0x2,%edi
call   1080 <pow@plt>
shl    $0x2,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x20(%rsp),%xmm0
ucomisd 0xaaf(%rip),%xmm0
jb     170d <main+0x5ad>
movsd  0x18(%rsp),%xmm0
mov    $0x2,%edi
call   1080 <pow@plt>
lea    (%rax,%rax,8),%eax
lea    (%rax,%rax,4),%eax
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x8(%rsp),%xmm0
movsd  0x18(%rsp),%xmm2
mulsd  0xa70(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
movsd  %xmm2,0x20(%rsp)
mov    $0x2,%edi
call   1080 <pow@plt>
shl    $0x2,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x20(%rsp),%xmm0
movsd  0xa50(%rip),%xmm1
ucomisd %xmm0,%xmm1
jb     170d <main+0x5ad>
movsd  0x18(%rsp),%xmm0
mov    $0x2,%edi
call   1080 <pow@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x18(%rsp),%xmm2
mulsd  0xa29(%rip),%xmm2
movsd  0x8(%rsp),%xmm0
mulsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
movsd  %xmm2,0x20(%rsp)
mov    $0x2,%edi
call   1080 <pow@plt>
lea    (%rax,%rax,8),%eax
lea    (%rax,%rax,2),%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x20(%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  0x9f4(%rip),%xmm1
movsd  %xmm1,0x20(%rsp)
movsd  0x18(%rsp),%xmm0
mov    $0x2,%edi
call   1080 <pow@plt>
lea    (%rax,%rax,8),%eax
lea    (%rax,%rax,4),%eax
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x8(%rsp),%xmm0
movsd  0x18(%rsp),%xmm2
mulsd  0x99d(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
movsd  %xmm2,0x60(%rsp)
mov    $0x2,%edi
call   1080 <pow@plt>
shl    $0x2,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x60(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
mov    %r13,%rdi
mov    $0x2,%al
call   1040 <printf@plt>
movsd  0x20(%rsp),%xmm1
movsd  0x8(%rsp),%xmm3
addsd  0x48(%rsp),%xmm3
movsd  %xmm3,0x8(%rsp)
movapd %xmm1,%xmm4
movapd %xmm1,%xmm2
sub    $0x1,%ebp
jb     14f0 <main+0x390>
movsd  0x70(%rsp),%xmm4
movsd  0x50(%rsp),%xmm2
jmp    14f0 <main+0x390>
lea    0x9d1(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [3 x i8] c"%s\00"
@.str.1 = [21 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 x1: \00"
@.str.2 = [4 x i8] c"%lf\00"
@.str.3 = [19 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 x2 \00"
@.str.4 = [19 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 a: \00"
@.str.5 = [43 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 \D0\BF\D0\B0\D1\80\D0\B0\D0\BC\D0\B5\D1\82\D1\80 \D1\88\D0\B0\D0\B3\D0\B0 \00"
@.str.6 = [104 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 \D0\B1\D1\83\D0\BA\D0\B2\D1\83 \D0\B2\D1\8B\D1\80\D0\B0\D0\B6\D0\B5\D0\BD\D0\B8\D1\8F, \D0\BA\D0\BE\D1\82\D0\BE\D1\80\D0\BE\D0\B5 \D1\85\D0\BE\D1\82\D0\B8\D1\82\D0\B5 \D0\B2\D1\8B\D1\87\D0\B8\D1\81\D0\BB\D0\B8\D1\82\D1\8C - G,F,Y) \0A\00"
@.str.7 = [24 x i8] c"X = %.3lf \09| Y = %.3lf\0A\00"
@.str.8 = [43 x i8] c"\D0\9D\D0\B0 \D0\BD\D0\BE\D0\BB\D1\8C \D0\B4\D0\B5\D0\BB\D0\B8\D1\82\D1\8C \D0\BD\D0\B5\D0\BB\D1\8C\D0\B7\D1\8F :)\00"
@.str.9 = [104 x i8] c" \D0\9C\D0\B0\D0\BA\D1\81\D0\B8\D0\BC\D0\B0\D0\BB\D1\8C\D0\BD\D0\BE\D0\B5 \D0\B7\D0\BD\D0\B0\D1\87\D0\B5\D0\BD\D0\B8\D0\B5 = %9.3lf\0A \D0\9C\D0\B8\D0\BD\D0\B8\D0\BC\D0\B0\D0\BB\D1\8C\D0\BD\D0\BE\D0\B5 \D0\B7\D0\BD\D0\B0\D1\87\D0\B5\D0\BD\D0\B8\D0\B5 = %9.3lf\0A\00"
@.str.10 = [28 x i8] c"ne verno vvedena function \0A\00"
@.str.11 = [43 x i8] c"\D0\92\D1\8B\D1\87\D0\B8\D1\81\D0\BB\D0\B8\D0\BC \D0\B5\D1\89\D0\B5 \D1\80\D0\B0\D0\B7? (1-\D0\B4\D0\B0) \0A\00"
@.str.12 = [3 x i8] c"%i\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca double
%3 = alloca double
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca i32
%12 = alloca i8
%13 = alloca i32
%14 = alloca [100 x double]
store i32 0, i32* %1
store i32 1, i32* %13
br label %15
15: ; preds = %285, %0
%16 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i64 0, i64 0))
%17 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), double* %6)
%18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0))
%19 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), double* %7)
%20 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0))
%21 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), double* %5)
%22 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.5, i64 0, i64 0))
%23 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), double* %8)
store i32 0, i32* %11
store double 0.000000e+00, double* %10
store double 0.000000e+00, double* %9
%24 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([104 x i8], [104 x i8]* @.str.6, i64 0, i64 0))
%25 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %12)
%26 = load i8, i8* %12
%27 = sext i8 %26 to i32
switch i32 %27, label %278 [
i32 71, label %28
i32 70, label %143
i32 89, label %209
]
28: ; preds = %15
br label %29
29: ; preds = %138, %28
%30 = load double, double* %6
%31 = load double, double* %7
%32 = fcmp ole double %30, %31
br i1 %32, label %33, label %139
33: ; preds = %29
%34 = load double, double* %5
%35 = call i32 @pow(double %34, i32 2)
%36 = mul nsw i32 45, %35
%37 = sitofp i32 %36 to double
%38 = load double, double* %5
%39 = fmul double 2.900000e+01, %38
%40 = load double, double* %6
%41 = fneg double %39
%42 = call double @llvm.fmuladd.f64(double %41, double %40, double %37)
%43 = load double, double* %6
%44 = call i32 @pow(double %43, i32 2)
%45 = mul nsw i32 4, %44
%46 = sitofp i32 %45 to double
%47 = fadd double %42, %46
%48 = fcmp oge double %47, 0x3EB0C6F7A0B5ED8D
br i1 %48, label %49, label %136
49: ; preds = %33
%50 = load double, double* %5
%51 = call i32 @pow(double %50, i32 2)
%52 = mul nsw i32 45, %51
%53 = sitofp i32 %52 to double
%54 = load double, double* %5
%55 = fmul double 2.900000e+01, %54
%56 = load double, double* %6
%57 = fneg double %55
%58 = call double @llvm.fmuladd.f64(double %57, double %56, double %53)
%59 = load double, double* %6
%60 = call i32 @pow(double %59, i32 2)
%61 = mul nsw i32 4, %60
%62 = sitofp i32 %61 to double
%63 = fadd double %58, %62
%64 = fcmp ole double %63, 0xBEB0C6F7A0B5ED8D
br i1 %64, label %65, label %136
65: ; preds = %49
%66 = load double, double* %5
%67 = call i32 @pow(double %66, i32 2)
%68 = sitofp i32 %67 to double
%69 = load double, double* %5
%70 = fmul double 2.400000e+01, %69
%71 = load double, double* %6
%72 = call double @llvm.fmuladd.f64(double %70, double %71, double %68)
%73 = load double, double* %6
%74 = call i32 @pow(double %73, i32 2)
%75 = mul nsw i32 27, %74
%76 = sitofp i32 %75 to double
%77 = fsub double %72, %76
%78 = fmul double 1.600000e+01, %77
%79 = fneg double %78
%80 = load double, double* %5
%81 = call i32 @pow(double %80, i32 2)
%82 = mul nsw i32 45, %81
%83 = sitofp i32 %82 to double
%84 = load double, double* %5
%85 = fmul double 2.900000e+01, %84
%86 = load double, double* %6
%87 = fneg double %85
%88 = call double @llvm.fmuladd.f64(double %87, double %86, double %83)
%89 = load double, double* %6
%90 = call i32 @pow(double %89, i32 2)
%91 = mul nsw i32 4, %90
%92 = sitofp i32 %91 to double
%93 = fadd double %88, %92
%94 = fdiv double %79, %93
store double %94, double* %2
%95 = load double, double* %6
%96 = load double, double* %2
%97 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.7, i64 0, i64 0), double %95, double %96)
%98 = load double, double* %6
%99 = load double, double* %8
%100 = fadd double %98, %99
store double %100, double* %6
%101 = load double, double* %2
%102 = load i32, i32* %11
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds [100 x double], [100 x double]* %14, i64 0, i64 %103
store double %101, double* %104
%105 = load i32, i32* %11
%106 = sitofp i32 %105 to double
%107 = fcmp ole double %106, 0x3EB0C6F7A0B5ED8D
br i1 %107, label %108, label %115
108: ; preds = %65
%109 = load i32, i32* %11
%110 = sitofp i32 %109 to double
%111 = fcmp oge double %110, 0xBEB0C6F7A0B5ED8D
br i1 %111, label %112, label %115
112: ; preds = %108
%113 = load double, double* %2
store double %113, double* %10
%114 = load double, double* %2
store double %114, double* %9
br label %115
115: ; preds = %112, %108, %65
%116 = load double, double* %2
%117 = load double, double* %10
%118 = fcmp ogt double %116, %117
br i1 %118, label %119, label %124
119: ; preds = %115
%120 = load i32, i32* %11
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds [100 x double], [100 x double]* %14, i64 0, i64 %121
%123 = load double, double* %122
store double %123, double* %10
br label %124
124: ; preds = %119, %115
%125 = load double, double* %2
%126 = load double, double* %9
%127 = fcmp olt double %125, %126
br i1 %127, label %128, label %133
128: ; preds = %124
%129 = load i32, i32* %11
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds [100 x double], [100 x double]* %14, i64 0, i64 %130
%132 = load double, double* %131
store double %132, double* %9
br label %133
133: ; preds = %128, %124
%134 = load i32, i32* %11
%135 = add nsw i32 %134, 1
store i32 %135, i32* %11
br label %138
136: ; preds = %49, %33
%137 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.8, i64 0, i64 0))
store i32 0, i32* %1
br label %287
138: ; preds = %133
br label %29
139: ; preds = %29
%140 = load double, double* %10
%141 = load double, double* %9
%142 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([104 x i8], [104 x i8]* @.str.9, i64 0, i64 0), double %140, double %141)
br label %280
143: ; preds = %15
br label %144
144: ; preds = %202, %143
%145 = load double, double* %6
%146 = load double, double* %7
%147 = fcmp ole double %145, %146
br i1 %147, label %148, label %205
148: ; preds = %144
%149 = load double, double* %5
%150 = load double, double* %5
%151 = fmul double %149, %150
%152 = load double, double* %5
%153 = fmul double 1.300000e+01, %152
%154 = load double, double* %6
%155 = fmul double %153, %154
%156 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %151, double %155)
%157 = load double, double* %6
%158 = load double, double* %6
%159 = fmul double %157, %158
%160 = call double @llvm.fmuladd.f64(double -3.000000e+01, double %159, double %156)
%161 = fptosi double %160 to i32
%162 = call double @atan(i32 %161)
%163 = fneg double %162
store double %163, double* %3
%164 = load double, double* %6
%165 = load double, double* %3
%166 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.7, i64 0, i64 0), double %164, double %165)
%167 = load double, double* %6
%168 = load double, double* %8
%169 = fadd double %167, %168
store double %169, double* %6
%170 = load double, double* %3
%171 = load i32, i32* %11
%172 = sext i32 %171 to i64
%173 = getelementptr inbounds [100 x double], [100 x double]* %14, i64 0, i64 %172
store double %170, double* %173
%174 = load i32, i32* %11
%175 = sitofp i32 %174 to double
%176 = fcmp ole double %175, 0x3EB0C6F7A0B5ED8D
br i1 %176, label %177, label %184
177: ; preds = %148
%178 = load i32, i32* %11
%179 = sitofp i32 %178 to double
%180 = fcmp oge double %179, 0xBEB0C6F7A0B5ED8D
br i1 %180, label %181, label %184
181: ; preds = %177
%182 = load double, double* %3
store double %182, double* %10
%183 = load double, double* %3
store double %183, double* %9
br label %184
184: ; preds = %181, %177, %148
%185 = load double, double* %3
%186 = load double, double* %10
%187 = fcmp ogt double %185, %186
br i1 %187, label %188, label %193
188: ; preds = %184
%189 = load i32, i32* %11
%190 = sext i32 %189 to i64
%191 = getelementptr inbounds [100 x double], [100 x double]* %14, i64 0, i64 %190
%192 = load double, double* %191
store double %192, double* %10
br label %193
193: ; preds = %188, %184
%194 = load double, double* %3
%195 = load double, double* %9
%196 = fcmp olt double %194, %195
br i1 %196, label %197, label %202
197: ; preds = %193
%198 = load i32, i32* %11
%199 = sext i32 %198 to i64
%200 = getelementptr inbounds [100 x double], [100 x double]* %14, i64 0, i64 %199
%201 = load double, double* %200
store double %201, double* %9
br label %202
202: ; preds = %197, %193
%203 = load i32, i32* %11
%204 = add nsw i32 %203, 1
store i32 %204, i32* %11
br label %144
205: ; preds = %144
%206 = load double, double* %10
%207 = load double, double* %9
%208 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([104 x i8], [104 x i8]* @.str.9, i64 0, i64 0), double %206, double %207)
br label %280
209: ; preds = %15
br label %210
210: ; preds = %271, %209
%211 = load double, double* %6
%212 = load double, double* %7
%213 = fcmp ole double %211, %212
br i1 %213, label %214, label %274
214: ; preds = %210
%215 = load double, double* %5
%216 = call i32 @pow(double %215, i32 2)
%217 = mul nsw i32 2, %216
%218 = sitofp i32 %217 to double
%219 = load double, double* %5
%220 = fmul double 1.900000e+01, %219
%221 = load double, double* %6
%222 = call double @llvm.fmuladd.f64(double %220, double %221, double %218)
%223 = load double, double* %6
%224 = call i32 @pow(double %223, i32 2)
%225 = mul nsw i32 9, %224
%226 = sitofp i32 %225 to double
%227 = fadd double %222, %226
%228 = fadd double %227, 1.000000e+00
%229 = fptosi double %228 to i32
%230 = call double @log(i32 %229)
%231 = call double @log(i32 10)
%232 = fdiv double %230, %231
store double %232, double* %4
%233 = load double, double* %6
%234 = load double, double* %4
%235 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.7, i64 0, i64 0), double %233, double %234)
%236 = load double, double* %6
%237 = load double, double* %8
%238 = fadd double %236, %237
store double %238, double* %6
%239 = load double, double* %4
%240 = load i32, i32* %11
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds [100 x double], [100 x double]* %14, i64 0, i64 %241
store double %239, double* %242
%243 = load i32, i32* %11
%244 = sitofp i32 %243 to double
%245 = fcmp ole double %244, 0x3EB0C6F7A0B5ED8D
br i1 %245, label %246, label %253
246: ; preds = %214
%247 = load i32, i32* %11
%248 = sitofp i32 %247 to double
%249 = fcmp oge double %248, 0xBEB0C6F7A0B5ED8D
br i1 %249, label %250, label %253
250: ; preds = %246
%251 = load double, double* %4
store double %251, double* %10
%252 = load double, double* %4
store double %252, double* %9
br label %253
253: ; preds = %250, %246, %214
%254 = load double, double* %4
%255 = load double, double* %10
%256 = fcmp ogt double %254, %255
br i1 %256, label %257, label %262
257: ; preds = %253
%258 = load i32, i32* %11
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds [100 x double], [100 x double]* %14, i64 0, i64 %259
%261 = load double, double* %260
store double %261, double* %10
br label %262
262: ; preds = %257, %253
%263 = load double, double* %4
%264 = load double, double* %9
%265 = fcmp olt double %263, %264
br i1 %265, label %266, label %271
266: ; preds = %262
%267 = load i32, i32* %11
%268 = sext i32 %267 to i64
%269 = getelementptr inbounds [100 x double], [100 x double]* %14, i64 0, i64 %268
%270 = load double, double* %269
store double %270, double* %9
br label %271
271: ; preds = %266, %262
%272 = load i32, i32* %11
%273 = add nsw i32 %272, 1
store i32 %273, i32* %11
br label %210
274: ; preds = %210
%275 = load double, double* %10
%276 = load double, double* %9
%277 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([104 x i8], [104 x i8]* @.str.9, i64 0, i64 0), double %275, double %276)
br label %280
278: ; preds = %15
%279 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.10, i64 0, i64 0))
br label %280
280: ; preds = %278, %274, %205, %139
%281 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.11, i64 0, i64 0))
%282 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i64 0, i64 0), i32* %13)
%283 = load i32, i32* %13
%284 = icmp eq i32 %283, 1
br i1 %284, label %285, label %286
285: ; preds = %280
br label %15
286: ; preds = %280
store i32 0, i32* %1
br label %287
287: ; preds = %286, %136
%288 = load i32, i32* %1
ret i32 %288
}

LLVM IR (-O2):
@.str = [3 x i8] c"%s\00"
@.str.1 = [21 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 x1: \00"
@.str.2 = [4 x i8] c"%lf\00"
@.str.3 = [19 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 x2 \00"
@.str.4 = [19 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 a: \00"
@.str.5 = [43 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 \D0\BF\D0\B0\D1\80\D0\B0\D0\BC\D0\B5\D1\82\D1\80 \D1\88\D0\B0\D0\B3\D0\B0 \00"
@.str.7 = [24 x i8] c"X = %.3lf \09| Y = %.3lf\0A\00"
@.str.8 = [43 x i8] c"\D0\9D\D0\B0 \D0\BD\D0\BE\D0\BB\D1\8C \D0\B4\D0\B5\D0\BB\D0\B8\D1\82\D1\8C \D0\BD\D0\B5\D0\BB\D1\8C\D0\B7\D1\8F :)\00"
@.str.9 = [104 x i8] c" \D0\9C\D0\B0\D0\BA\D1\81\D0\B8\D0\BC\D0\B0\D0\BB\D1\8C\D0\BD\D0\BE\D0\B5 \D0\B7\D0\BD\D0\B0\D1\87\D0\B5\D0\BD\D0\B8\D0\B5 = %9.3lf\0A \D0\9C\D0\B8\D0\BD\D0\B8\D0\BC\D0\B0\D0\BB\D1\8C\D0\BD\D0\BE\D0\B5 \D0\B7\D0\BD\D0\B0\D1\87\D0\B5\D0\BD\D0\B8\D0\B5 = %9.3lf\0A\00"
@.str.12 = [3 x i8] c"%i\00"
@str = [103 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 \D0\B1\D1\83\D0\BA\D0\B2\D1\83 \D0\B2\D1\8B\D1\80\D0\B0\D0\B6\D0\B5\D0\BD\D0\B8\D1\8F, \D0\BA\D0\BE\D1\82\D0\BE\D1\80\D0\BE\D0\B5 \D1\85\D0\BE\D1\82\D0\B8\D1\82\D0\B5 \D0\B2\D1\8B\D1\87\D0\B8\D1\81\D0\BB\D0\B8\D1\82\D1\8C - G,F,Y) \00"
@str.13 = [42 x i8] c"\D0\92\D1\8B\D1\87\D0\B8\D1\81\D0\BB\D0\B8\D0\BC \D0\B5\D1\89\D0\B5 \D1\80\D0\B0\D0\B7? (1-\D0\B4\D0\B0) \00"
@str.14 = [27 x i8] c"ne verno vvedena function \00"
define i32 @main() {
%1 = alloca double
%2 = alloca double
%3 = alloca double
%4 = alloca double
%5 = alloca i8
%6 = alloca i32
%7 = bitcast double* %1 to i8*
%8 = bitcast double* %2 to i8*
%9 = bitcast double* %3 to i8*
%10 = bitcast double* %4 to i8*
%11 = bitcast i32* %6 to i8*
store i32 1, i32* %6
br label %12
12: ; preds = %191, %0
%13 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i64 0, i64 0))
%14 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), double* %2)
%15 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0))
%16 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), double* %3)
%17 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0))
%18 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), double* %1)
%19 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.5, i64 0, i64 0))
%20 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), double* %4)
%21 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([103 x i8], [103 x i8]* @str, i64 0, i64 0))
%22 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %5)
%23 = load i8, i8* %5
%24 = sext i8 %23 to i32
switch i32 %24, label %189 [
i32 71, label %33
i32 70, label %29
i32 89, label %25
]
25: ; preds = %12
%26 = load double, double* %2
%27 = load double, double* %3
%28 = fcmp ugt double %26, %27
br i1 %28, label %185, label %149
29: ; preds = %12
%30 = load double, double* %2
%31 = load double, double* %3
%32 = fcmp ugt double %30, %31
br i1 %32, label %145, label %115
33: ; preds = %12
%34 = load double, double* %2
%35 = load double, double* %3
%36 = fcmp ugt double %34, %35
br i1 %36, label %111, label %37
37: ; preds = %33, %68
%38 = phi i32 [ %106, %68 ], [ 0, %33 ]
%39 = phi double [ %103, %68 ], [ 0.000000e+00, %33 ]
%40 = phi double [ %105, %68 ], [ 0.000000e+00, %33 ]
%41 = load double, double* %1
%42 = call i32 @pow(double %41, i32 2)
%43 = mul nsw i32 %42, 45
%44 = sitofp i32 %43 to double
%45 = load double, double* %1
%46 = load double, double* %2
%47 = fmul double %45, -2.900000e+01
%48 = call double @llvm.fmuladd.f64(double %47, double %46, double %44)
%49 = call i32 @pow(double %46, i32 2)
%50 = shl nsw i32 %49, 2
%51 = sitofp i32 %50 to double
%52 = fadd double %48, %51
%53 = fcmp ult double %52, 0x3EB0C6F7A0B5ED8D
br i1 %53, label %109, label %54
54: ; preds = %37
%55 = load double, double* %1
%56 = call i32 @pow(double %55, i32 2)
%57 = mul nsw i32 %56, 45
%58 = sitofp i32 %57 to double
%59 = load double, double* %1
%60 = load double, double* %2
%61 = fmul double %59, -2.900000e+01
%62 = call double @llvm.fmuladd.f64(double %61, double %60, double %58)
%63 = call i32 @pow(double %60, i32 2)
%64 = shl nsw i32 %63, 2
%65 = sitofp i32 %64 to double
%66 = fadd double %62, %65
%67 = fcmp ugt double %66, 0xBEB0C6F7A0B5ED8D
br i1 %67, label %109, label %68
68: ; preds = %54
%69 = load double, double* %1
%70 = call i32 @pow(double %69, i32 2)
%71 = sitofp i32 %70 to double
%72 = load double, double* %1
%73 = fmul double %72, 2.400000e+01
%74 = load double, double* %2
%75 = call double @llvm.fmuladd.f64(double %73, double %74, double %71)
%76 = call i32 @pow(double %74, i32 2)
%77 = mul nsw i32 %76, 27
%78 = sitofp i32 %77 to double
%79 = fsub double %75, %78
%80 = fmul double %79, -1.600000e+01
%81 = load double, double* %1
%82 = call i32 @pow(double %81, i32 2)
%83 = mul nsw i32 %82, 45
%84 = sitofp i32 %83 to double
%85 = load double, double* %1
%86 = load double, double* %2
%87 = fmul double %85, -2.900000e+01
%88 = call double @llvm.fmuladd.f64(double %87, double %86, double %84)
%89 = call i32 @pow(double %86, i32 2)
%90 = shl nsw i32 %89, 2
%91 = sitofp i32 %90 to double
%92 = fadd double %88, %91
%93 = fdiv double %80, %92
%94 = load double, double* %2
%95 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.7, i64 0, i64 0), double %94, double %93)
%96 = load double, double* %2
%97 = load double, double* %4
%98 = fadd double %96, %97
store double %98, double* %2
%99 = icmp eq i32 %38, 0
%100 = select i1 %99, double %93, double %40
%101 = select i1 %99, double %93, double %39
%102 = fcmp ogt double %93, %101
%103 = select i1 %102, double %93, double %101
%104 = fcmp olt double %93, %100
%105 = select i1 %104, double %93, double %100
%106 = add nuw nsw i32 %38, 1
%107 = load double, double* %3
%108 = fcmp ugt double %98, %107
br i1 %108, label %111, label %37
109: ; preds = %54, %37
%110 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.8, i64 0, i64 0))
br label %196
111: ; preds = %68, %33
%112 = phi double [ 0.000000e+00, %33 ], [ %105, %68 ]
%113 = phi double [ 0.000000e+00, %33 ], [ %103, %68 ]
%114 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([104 x i8], [104 x i8]* @.str.9, i64 0, i64 0), double %113, double %112)
br label %191
115: ; preds = %29, %115
%116 = phi double [ %134, %115 ], [ %30, %29 ]
%117 = phi i32 [ %142, %115 ], [ 0, %29 ]
%118 = phi double [ %139, %115 ], [ 0.000000e+00, %29 ]
%119 = phi double [ %141, %115 ], [ 0.000000e+00, %29 ]
%120 = load double, double* %1
%121 = fmul double %120, %120
%122 = fmul double %120, 1.300000e+01
%123 = fmul double %116, %122
%124 = call double @llvm.fmuladd.f64(double %121, double 1.000000e+01, double %123)
%125 = fmul double %116, %116
%126 = call double @llvm.fmuladd.f64(double %125, double -3.000000e+01, double %124)
%127 = fptosi double %126 to i32
%128 = call double @atan(i32 %127)
%129 = fneg double %128
%130 = load double, double* %2
%131 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.7, i64 0, i64 0), double %130, double %129)
%132 = load double, double* %2
%133 = load double, double* %4
%134 = fadd double %132, %133
store double %134, double* %2
%135 = icmp eq i32 %117, 0
%136 = select i1 %135, double %129, double %119
%137 = select i1 %135, double %129, double %118
%138 = fcmp olt double %137, %129
%139 = select i1 %138, double %129, double %137
%140 = fcmp ogt double %136, %129
%141 = select i1 %140, double %129, double %136
%142 = add nuw nsw i32 %117, 1
%143 = load double, double* %3
%144 = fcmp ugt double %134, %143
br i1 %144, label %145, label %115
145: ; preds = %115, %29
%146 = phi double [ 0.000000e+00, %29 ], [ %141, %115 ]
%147 = phi double [ 0.000000e+00, %29 ], [ %139, %115 ]
%148 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([104 x i8], [104 x i8]* @.str.9, i64 0, i64 0), double %147, double %146)
br label %191
149: ; preds = %25, %149
%150 = phi i32 [ %182, %149 ], [ 0, %25 ]
%151 = phi double [ %179, %149 ], [ 0.000000e+00, %25 ]
%152 = phi double [ %181, %149 ], [ 0.000000e+00, %25 ]
%153 = load double, double* %1
%154 = call i32 @pow(double %153, i32 2)
%155 = shl nsw i32 %154, 1
%156 = sitofp i32 %155 to double
%157 = load double, double* %1
%158 = fmul double %157, 1.900000e+01
%159 = load double, double* %2
%160 = call double @llvm.fmuladd.f64(double %158, double %159, double %156)
%161 = call i32 @pow(double %159, i32 2)
%162 = mul nsw i32 %161, 9
%163 = sitofp i32 %162 to double
%164 = fadd double %160, %163
%165 = fadd double %164, 1.000000e+00
%166 = fptosi double %165 to i32
%167 = call double @log(i32 %166)
%168 = call double @log(i32 10)
%169 = fdiv double %167, %168
%170 = load double, double* %2
%171 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.7, i64 0, i64 0), double %170, double %169)
%172 = load double, double* %2
%173 = load double, double* %4
%174 = fadd double %172, %173
store double %174, double* %2
%175 = icmp eq i32 %150, 0
%176 = select i1 %175, double %169, double %152
%177 = select i1 %175, double %169, double %151
%178 = fcmp ogt double %169, %177
%179 = select i1 %178, double %169, double %177
%180 = fcmp olt double %169, %176
%181 = select i1 %180, double %169, double %176
%182 = add nuw nsw i32 %150, 1
%183 = load double, double* %3
%184 = fcmp ugt double %174, %183
br i1 %184, label %185, label %149
185: ; preds = %149, %25
%186 = phi double [ 0.000000e+00, %25 ], [ %181, %149 ]
%187 = phi double [ 0.000000e+00, %25 ], [ %179, %149 ]
%188 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([104 x i8], [104 x i8]* @.str.9, i64 0, i64 0), double %187, double %186)
br label %191
189: ; preds = %12
%190 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.14, i64 0, i64 0))
br label %191
191: ; preds = %189, %185, %145, %111
%192 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @str.13, i64 0, i64 0))
%193 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i64 0, i64 0), i32* %6)
%194 = load i32, i32* %6
%195 = icmp eq i32 %194, 1
br i1 %195, label %12, label %196
196: ; preds = %191, %109
ret i32 0
}