#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 kyklos(float);
double parallhlogrammo(float, float);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, ...);
int /*<<< orphan*/ showMenu();
double tetragono(float);
double trigono(float, float);
int main(void) {
  float factor1, factor2;
  char choice;
  do {
    showMenu();
    scanf(" %c", &choice);
    if (choice == '1') {
      printf("\nDoste mhkos pleyras tetragonou: ");
      scanf("%f", &factor1);
      printf("H perimetros tetragonou me diastaseis %.2fx%.2f ", factor1,
             factor1);
      printf("einai %.2f\n\n", tetragono(factor1));
    } else if (choice == '2') {
      printf("\nDoste mhkos parallhlogrammou: ");
      scanf("%f", &factor1);
      printf("Doste platos parallhlogrammou: ");
      scanf("%f", &factor2);
      printf("H perimetros parallhlogrammou me diataseis %.2fx%.2f ", factor1,
             factor2);
      printf("einai %.2f\n\n", parallhlogrammo(factor1, factor2));
    } else if (choice == '3') {
      printf(
          "\nDoste mhkos proths kathetis plevras tou orthogoniou trigonou: ");
      scanf("%f", &factor1);
      printf(
          "Doste mhkos deyterhs kathetis plevras tou orthogoniou trigonou: ");
      scanf("%f", &factor2);
      printf("H perimetros orthogoniou trigonou me kathetes\n");
      printf("pelvres %.2f kai %.2f ", factor1, factor2);
      printf("einai %.2f\n\n", trigono(factor1, factor2));
    } else if (choice == '4') {
      printf("\nDoste mhkos aktinas kyklou: ");
      scanf("%f", &factor1);
      printf("H perimetros kyklou me aktina %.2f einai ", factor1);
      printf("%.2f\n\n", kyklos(factor1));
    } else if (choice != '0') {
      printf(
          "\nParakalo epilixte mia apo tis diathesimes epiloges, 0 eos 4\n\n");
    }
  } while (choice != '0');
  return 1;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x0,%al
call   1060 <showMenu@plt>
lea    0xe73(%rip),%rdi
lea    -0xd(%rbp),%rsi
mov    $0x0,%al
call   1080 <scanf@plt>
movsbl -0xd(%rbp),%eax
cmp    $0x31,%eax
jne    1202 <main+0x92>
lea    0xe58(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xe6c(%rip),%rdi
lea    -0x8(%rbp),%rsi
mov    $0x0,%al
call   1080 <scanf@plt>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x8(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
lea    0xe4b(%rip),%rdi
mov    $0x2,%al
call   1050 <printf@plt>
movss  -0x8(%rbp),%xmm0
call   1070 <tetragono@plt>
lea    0xe64(%rip),%rdi
mov    $0x1,%al
call   1050 <printf@plt>
jmp    13be <main+0x24e>
movsbl -0xd(%rbp),%eax
cmp    $0x32,%eax
jne    1291 <main+0x121>
lea    0xe51(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xe02(%rip),%rdi
lea    -0x8(%rbp),%rsi
mov    $0x0,%al
call   1080 <scanf@plt>
lea    0xe51(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xde2(%rip),%rdi
lea    -0xc(%rbp),%rsi
mov    $0x0,%al
call   1080 <scanf@plt>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0xc(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
lea    0xe3f(%rip),%rdi
mov    $0x2,%al
call   1050 <printf@plt>
movss  -0x8(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
call   1030 <parallhlogrammo@plt>
lea    0xdd5(%rip),%rdi
mov    $0x1,%al
call   1050 <printf@plt>
jmp    13b9 <main+0x249>
movsbl -0xd(%rbp),%eax
cmp    $0x33,%eax
jne    132e <main+0x1be>
lea    0xe38(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xd73(%rip),%rdi
lea    -0x8(%rbp),%rsi
mov    $0x0,%al
call   1080 <scanf@plt>
lea    0xe58(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xd53(%rip),%rdi
lea    -0xc(%rbp),%rsi
mov    $0x0,%al
call   1080 <scanf@plt>
lea    0xe79(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0xc(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
lea    0xe88(%rip),%rdi
mov    $0x2,%al
call   1050 <printf@plt>
movss  -0x8(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
call   1090 <trigono@plt>
lea    0xd38(%rip),%rdi
mov    $0x1,%al
call   1050 <printf@plt>
jmp    13b4 <main+0x244>
movsbl -0xd(%rbp),%eax
cmp    $0x34,%eax
jne    138f <main+0x21f>
lea    0xe62(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xcd6(%rip),%rdi
lea    -0x8(%rbp),%rsi
mov    $0x0,%al
call   1080 <scanf@plt>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe57(%rip),%rdi
mov    $0x1,%al
call   1050 <printf@plt>
movss  -0x8(%rbp),%xmm0
call   1040 <kyklos@plt>
lea    0xcdd(%rip),%rdi
mov    $0x1,%al
call   1050 <printf@plt>
jmp    13af <main+0x23f>
movsbl -0xd(%rbp),%eax
cmp    $0x30,%eax
je     13aa <main+0x23a>
lea    0xe49(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13af <main+0x23f>
jmp    13b4 <main+0x244>
jmp    13b9 <main+0x249>
jmp    13be <main+0x24e>
jmp    13c3 <main+0x253>
movsbl -0xd(%rbp),%eax
cmp    $0x30,%eax
jne    117f <main+0xf>
mov    $0x1,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
lea    0xe7f(%rip),%r14
lea    0xf(%rsp),%r13
lea    0xe5f(%rip),%r15
lea    0xe92(%rip),%rbx
lea    0x10(%rsp),%rbp
lea    0xeba(%rip),%r12
jmp    11e0 <main+0x60>
cs nopw 0x0(%rax,%rax,1)
lea    0x100a(%rip),%rdi
call   1030 <puts@plt>
cmpb   $0x30,0xf(%rsp)
je     13a7 <main+0x227>
nopw   0x0(%rax,%rax,1)
xor    %eax,%eax
call   1070 <showMenu@plt>
mov    %r14,%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1090 <scanf@plt>
movzbl 0xf(%rsp),%eax
add    $0xd0,%al
cmp    $0x4,%al
ja     11c0 <main+0x40>
movzbl %al,%eax
movslq (%r15,%rax,4),%rax
add    %r15,%rax
jmp    *%rax
lea    0xe06(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
xor    %eax,%eax
call   1090 <scanf@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe06(%rip),%rdi
movaps %xmm0,%xmm1
mov    $0x2,%al
call   1060 <printf@plt>
movss  0x10(%rsp),%xmm0
call   1080 <tetragono@plt>
jmp    1347 <main+0x1c7>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    0xe14(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
xor    %eax,%eax
call   1090 <scanf@plt>
lea    0xe19(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
lea    0x14(%rsp),%rsi
xor    %eax,%eax
call   1090 <scanf@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  0x14(%rsp),%xmm1
cvtss2sd %xmm1,%xmm1
lea    0xe08(%rip),%rdi
mov    $0x2,%al
call   1060 <printf@plt>
movss  0x10(%rsp),%xmm0
movss  0x14(%rsp),%xmm1
call   1040 <parallhlogrammo@plt>
jmp    1347 <main+0x1c7>
nopl   (%rax)
lea    0xe1a(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
xor    %eax,%eax
call   1090 <scanf@plt>
lea    0xe3f(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
lea    0x14(%rsp),%rsi
xor    %eax,%eax
call   1090 <scanf@plt>
lea    0xf00(%rip),%rdi
call   1030 <puts@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  0x14(%rsp),%xmm1
cvtss2sd %xmm1,%xmm1
lea    0xe43(%rip),%rdi
mov    $0x2,%al
call   1060 <printf@plt>
movss  0x10(%rsp),%xmm0
movss  0x14(%rsp),%xmm1
call   10a0 <trigono@plt>
mov    %r12,%rdi
jmp    1395 <main+0x215>
nopl   0x0(%rax)
lea    0xe32(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %rbx,%rdi
mov    %rbp,%rsi
xor    %eax,%eax
call   1090 <scanf@plt>
movss  0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe2b(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movss  0x10(%rsp),%xmm0
call   1050 <kyklos@plt>
lea    0xcdf(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
cmpb   $0x30,0xf(%rsp)
jne    11e0 <main+0x60>
mov    $0x1,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [4 x i8] c" %c\00"
@.str.1 = [34 x i8] c"\0ADoste mhkos pleyras tetragonou: \00"
@.str.2 = [3 x i8] c"%f\00"
@.str.3 = [49 x i8] c"H perimetros tetragonou me diastaseis %.2fx%.2f \00"
@.str.4 = [13 x i8] c"einai %.2f\0A\0A\00"
@.str.5 = [32 x i8] c"\0ADoste mhkos parallhlogrammou: \00"
@.str.6 = [32 x i8] c"Doste platos parallhlogrammou: \00"
@.str.7 = [54 x i8] c"H perimetros parallhlogrammou me diataseis %.2fx%.2f \00"
@.str.8 = [64 x i8] c"\0ADoste mhkos proths kathetis plevras tou orthogoniou trigonou: \00"
@.str.9 = [65 x i8] c"Doste mhkos deyterhs kathetis plevras tou orthogoniou trigonou: \00"
@.str.10 = [47 x i8] c"H perimetros orthogoniou trigonou me kathetes\0A\00"
@.str.11 = [23 x i8] c"pelvres %.2f kai %.2f \00"
@.str.12 = [30 x i8] c"\0ADoste mhkos aktinas kyklou: \00"
@.str.13 = [42 x i8] c"H perimetros kyklou me aktina %.2f einai \00"
@.str.14 = [7 x i8] c"%.2f\0A\0A\00"
@.str.15 = [63 x i8] c"\0AParakalo epilixte mia apo tis diathesimes epiloges, 0 eos 4\0A\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca float
%3 = alloca float
%4 = alloca i8
store i32 0, i32* %1
br label %5
5: ; preds = %83, %0
%6 = call i32 (...) @showMenu()
%7 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* %4)
%8 = load i8, i8* %4
%9 = sext i8 %8 to i32
%10 = icmp eq i32 %9, 49
br i1 %10, label %11, label %22
11: ; preds = %5
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.1, i64 0, i64 0))
%13 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %2)
%14 = load float, float* %2
%15 = fpext float %14 to double
%16 = load float, float* %2
%17 = fpext float %16 to double
%18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.3, i64 0, i64 0), double %15, double %17)
%19 = load float, float* %2
%20 = call double @tetragono(float %19)
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i64 0, i64 0), double %20)
br label %82
22: ; preds = %5
%23 = load i8, i8* %4
%24 = sext i8 %23 to i32
%25 = icmp eq i32 %24, 50
br i1 %25, label %26, label %40
26: ; preds = %22
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.5, i64 0, i64 0))
%28 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %2)
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0))
%30 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %3)
%31 = load float, float* %2
%32 = fpext float %31 to double
%33 = load float, float* %3
%34 = fpext float %33 to double
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.7, i64 0, i64 0), double %32, double %34)
%36 = load float, float* %2
%37 = load float, float* %3
%38 = call double @parallhlogrammo(float %36, float %37)
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i64 0, i64 0), double %38)
br label %81
40: ; preds = %22
%41 = load i8, i8* %4
%42 = sext i8 %41 to i32
%43 = icmp eq i32 %42, 51
br i1 %43, label %44, label %59
44: ; preds = %40
%45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.8, i64 0, i64 0))
%46 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %2)
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.9, i64 0, i64 0))
%48 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %3)
%49 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.10, i64 0, i64 0))
%50 = load float, float* %2
%51 = fpext float %50 to double
%52 = load float, float* %3
%53 = fpext float %52 to double
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.11, i64 0, i64 0), double %51, double %53)
%55 = load float, float* %2
%56 = load float, float* %3
%57 = call double @trigono(float %55, float %56)
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i64 0, i64 0), double %57)
br label %80
59: ; preds = %40
%60 = load i8, i8* %4
%61 = sext i8 %60 to i32
%62 = icmp eq i32 %61, 52
br i1 %62, label %63, label %72
63: ; preds = %59
%64 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.12, i64 0, i64 0))
%65 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %2)
%66 = load float, float* %2
%67 = fpext float %66 to double
%68 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.13, i64 0, i64 0), double %67)
%69 = load float, float* %2
%70 = call double @kyklos(float %69)
%71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.14, i64 0, i64 0), double %70)
br label %79
72: ; preds = %59
%73 = load i8, i8* %4
%74 = sext i8 %73 to i32
%75 = icmp ne i32 %74, 48
br i1 %75, label %76, label %78
76: ; preds = %72
%77 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.15, i64 0, i64 0))
br label %78
78: ; preds = %76, %72
br label %79
79: ; preds = %78, %63
br label %80
80: ; preds = %79, %44
br label %81
81: ; preds = %80, %26
br label %82
82: ; preds = %81, %11
br label %83
83: ; preds = %82
%84 = load i8, i8* %4
%85 = sext i8 %84 to i32
%86 = icmp ne i32 %85, 48
br i1 %86, label %5, label %87
87: ; preds = %83
ret i32 1
}

LLVM IR (-O2):
@.str = [4 x i8] c" %c\00"
@.str.1 = [34 x i8] c"\0ADoste mhkos pleyras tetragonou: \00"
@.str.2 = [3 x i8] c"%f\00"
@.str.3 = [49 x i8] c"H perimetros tetragonou me diastaseis %.2fx%.2f \00"
@.str.4 = [13 x i8] c"einai %.2f\0A\0A\00"
@.str.5 = [32 x i8] c"\0ADoste mhkos parallhlogrammou: \00"
@.str.6 = [32 x i8] c"Doste platos parallhlogrammou: \00"
@.str.7 = [54 x i8] c"H perimetros parallhlogrammou me diataseis %.2fx%.2f \00"
@.str.8 = [64 x i8] c"\0ADoste mhkos proths kathetis plevras tou orthogoniou trigonou: \00"
@.str.9 = [65 x i8] c"Doste mhkos deyterhs kathetis plevras tou orthogoniou trigonou: \00"
@.str.11 = [23 x i8] c"pelvres %.2f kai %.2f \00"
@.str.12 = [30 x i8] c"\0ADoste mhkos aktinas kyklou: \00"
@.str.13 = [42 x i8] c"H perimetros kyklou me aktina %.2f einai \00"
@.str.14 = [7 x i8] c"%.2f\0A\0A\00"
@str = [62 x i8] c"\0AParakalo epilixte mia apo tis diathesimes epiloges, 0 eos 4\0A\00"
@str.16 = [46 x i8] c"H perimetros orthogoniou trigonou me kathetes\00"
define i32 @main() {
%1 = alloca float
%2 = alloca float
%3 = alloca i8
%4 = bitcast float* %1 to i8*
%5 = bitcast float* %2 to i8*
br label %6
6: ; preds = %59, %0
%7 = call i32 (...) @showMenu()
%8 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* %3)
%9 = load i8, i8* %3
switch i8 %9, label %57 [
i8 49, label %10
i8 50, label %19
i8 51, label %33
i8 52, label %48
i8 48, label %62
]
10: ; preds = %6
%11 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str.1, i64 0, i64 0))
%12 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %1)
%13 = load float, float* %1
%14 = fpext float %13 to double
%15 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.3, i64 0, i64 0), double %14, double %14)
%16 = load float, float* %1
%17 = call double @tetragono(float %16)
%18 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i64 0, i64 0), double %17)
br label %59
19: ; preds = %6
%20 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.5, i64 0, i64 0))
%21 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %1)
%22 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0))
%23 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %2)
%24 = load float, float* %1
%25 = fpext float %24 to double
%26 = load float, float* %2
%27 = fpext float %26 to double
%28 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @.str.7, i64 0, i64 0), double %25, double %27)
%29 = load float, float* %1
%30 = load float, float* %2
%31 = call double @parallhlogrammo(float %29, float %30)
%32 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i64 0, i64 0), double %31)
br label %59
33: ; preds = %6
%34 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @.str.8, i64 0, i64 0))
%35 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %1)
%36 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([65 x i8], [65 x i8]* @.str.9, i64 0, i64 0))
%37 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %2)
%38 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @str.16, i64 0, i64 0))
%39 = load float, float* %1
%40 = fpext float %39 to double
%41 = load float, float* %2
%42 = fpext float %41 to double
%43 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.11, i64 0, i64 0), double %40, double %42)
%44 = load float, float* %1
%45 = load float, float* %2
%46 = call double @trigono(float %44, float %45)
%47 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i64 0, i64 0), double %46)
br label %59
48: ; preds = %6
%49 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.12, i64 0, i64 0))
%50 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), float* %1)
%51 = load float, float* %1
%52 = fpext float %51 to double
%53 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.13, i64 0, i64 0), double %52)
%54 = load float, float* %1
%55 = call double @kyklos(float %54)
%56 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.14, i64 0, i64 0), double %55)
br label %59
57: ; preds = %6
%58 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @str, i64 0, i64 0))
br label %59
59: ; preds = %10, %33, %57, %48, %19
%60 = load i8, i8* %3
%61 = icmp eq i8 %60, 48
br i1 %61, label %62, label %6
62: ; preds = %6, %59
ret i32 1
}