#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ print(char *);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, ...);
void ex9() {
  print("\n------------------------------\n");
  int cargo;
  float salario_atual;
  printf("Informe o codigo de cargo do funcionario: ");
  scanf("%d", &cargo);
  while (!(cargo > 0 && cargo < 6)) {
    printf("Valor invalido, tente novamente: ");
    scanf("%d", &cargo);
  }
  printf("Informe o salario atual do funcionario: ");
  scanf("%f", &salario_atual);
  while (!(salario_atual > 0)) {
    printf("Valor invalido, tente novamente: ");
    scanf("%f", &salario_atual);
  }
  float aumento, salario_novo;
  if (cargo == 1) {
    aumento = .5 * salario_atual;
    salario_novo = salario_atual + aumento;
    printf("\nCargo: Escrituario\nAumento: R$%.2f\nNovo salario: R$%.2f\n",
           aumento, salario_novo);
  } else if (cargo == 2) {
    aumento = .35 * salario_atual;
    salario_novo = salario_atual + aumento;
    printf("\nCargo: Secretario\nAumento: R$%.2f\nNovo salario: R$%.2f\n",
           aumento, salario_novo);
  } else if (cargo == 3) {
    aumento = .2 * salario_atual;
    salario_novo = salario_atual + aumento;
    printf("\nCargo: Caixa\nAumento: R$%.2f\nNovo salario: R$%.2f\n", aumento,
           salario_novo);
  } else if (cargo == 4) {
    aumento = .1 * salario_atual;
    salario_novo = salario_atual + aumento;
    printf("\nCargo: Gerente\nAumento: R$%.2f\nNovo salario: R$%.2f\n", aumento,
           salario_novo);
  } else if (cargo == 5) {
    aumento = .0 * salario_atual;
    salario_novo = salario_atual + aumento;
    printf("\nCargo: Diretor\nAumento: R$%.2f\nNovo salario: R$%.2f\n", aumento,
           salario_novo);
  }
  print("\n------------------------------\n");
}


x86 assembly (clang, -O0):
<ex9>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
lea    0xee1(%rip),%rdi
call   1040 <print@plt>
lea    0xef6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf13(%rip),%rdi
lea    -0x4(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
xor    %eax,%eax
cmpl   $0x0,-0x4(%rbp)
mov    %al,-0x11(%rbp)
jle    117d <ex9+0x4d>
cmpl   $0x6,-0x4(%rbp)
setl   %al
mov    %al,-0x11(%rbp)
mov    -0x11(%rbp),%al
xor    $0xff,%al
test   $0x1,%al
jne    118f <ex9+0x5f>
jmp    11b4 <ex9+0x84>
lea    0xed9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xec8(%rip),%rdi
lea    -0x4(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
jmp    1164 <ex9+0x34>
lea    0xed6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xef1(%rip),%rdi
lea    -0x8(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movss  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
seta   %al
xor    $0xff,%al
test   $0x1,%al
jne    11f1 <ex9+0xc1>
jmp    1216 <ex9+0xe6>
lea    0xe77(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xeb4(%rip),%rdi
lea    -0x8(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
jmp    11d4 <ex9+0xa4>
cmpl   $0x1,-0x4(%rbp)
jne    1272 <ex9+0x142>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xde7(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x8(%rbp),%xmm0
addss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x10(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
lea    0xe57(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
jmp    13ec <ex9+0x2bc>
cmpl   $0x2,-0x4(%rbp)
jne    12ce <ex9+0x19e>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xd83(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x8(%rbp),%xmm0
addss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x10(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
lea    0xe35(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
jmp    13e7 <ex9+0x2b7>
cmpl   $0x3,-0x4(%rbp)
jne    132a <ex9+0x1fa>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xd1f(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x8(%rbp),%xmm0
addss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x10(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
lea    0xe12(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
jmp    13e2 <ex9+0x2b2>
cmpl   $0x4,-0x4(%rbp)
jne    1386 <ex9+0x256>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xcbb(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x8(%rbp),%xmm0
addss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x10(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
lea    0xdea(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
jmp    13dd <ex9+0x2ad>
cmpl   $0x5,-0x4(%rbp)
jne    13d8 <ex9+0x2a8>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  -0x8(%rbp),%xmm0
addss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x10(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
lea    0xdc9(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
jmp    13dd <ex9+0x2ad>
jmp    13e2 <ex9+0x2b2>
jmp    13e7 <ex9+0x2b7>
jmp    13ec <ex9+0x2bc>
lea    0xc2d(%rip),%rdi
call   1040 <print@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ex9>:
push   %r15
push   %r14
push   %rbx
sub    $0x10,%rsp
lea    0xef0(%rip),%rdi
call   1040 <print@plt>
lea    0xf05(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xf22(%rip),%rdi
lea    0x8(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
mov    0x8(%rsp),%eax
add    $0xfffffffa,%eax
cmp    $0xfffffffa,%eax
ja     11b3 <ex9+0x83>
lea    0xf06(%rip),%r14
lea    0xefc(%rip),%r15
lea    0x8(%rsp),%rbx
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
mov    0x8(%rsp),%eax
add    $0xfffffffa,%eax
cmp    $0xfffffffb,%eax
jb     1190 <ex9+0x60>
lea    0xee7(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
lea    0xf02(%rip),%rdi
lea    0xc(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
movss  0xc(%rsp),%xmm1
xorps  %xmm0,%xmm0
ucomiss %xmm0,%xmm1
ja     1225 <ex9+0xf5>
lea    0xe96(%rip),%r14
lea    0xeda(%rip),%r15
lea    0xc(%rsp),%rbx
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r14,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
xorps  %xmm0,%xmm0
movss  0xc(%rsp),%xmm1
ucomiss %xmm0,%xmm1
jbe    1200 <ex9+0xd0>
mov    0x8(%rsp),%eax
add    $0xffffffff,%eax
cmp    $0x4,%eax
ja     12cf <ex9+0x19f>
lea    0xde0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movss  0xdcb(%rip),%xmm0
mulss  %xmm1,%xmm0
lea    0xe75(%rip),%rdi
jmp    12bc <ex9+0x18c>
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
mulsd  0xda7(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
lea    0xe93(%rip),%rdi
jmp    12bc <ex9+0x18c>
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
mulsd  0xd83(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
lea    0xeb0(%rip),%rdi
jmp    12bc <ex9+0x18c>
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
mulsd  0xd5f(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
lea    0xec8(%rip),%rdi
jmp    12bc <ex9+0x18c>
xorps  %xmm0,%xmm0
mulss  %xmm1,%xmm0
lea    0xeee(%rip),%rdi
addss  %xmm0,%xmm1
cvtss2sd %xmm0,%xmm0
cvtss2sd %xmm1,%xmm1
mov    $0x2,%al
call   1030 <printf@plt>
lea    0xd5a(%rip),%rdi
call   1040 <print@plt>
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@.str = [33 x i8] c"\0A------------------------------\0A\00"
@.str.1 = [43 x i8] c"Informe o codigo de cargo do funcionario: \00"
@.str.2 = [3 x i8] c"%d\00"
@.str.3 = [34 x i8] c"Valor invalido, tente novamente: \00"
@.str.4 = [41 x i8] c"Informe o salario atual do funcionario: \00"
@.str.5 = [3 x i8] c"%f\00"
@.str.6 = [58 x i8] c"\0ACargo: Escrituario\0AAumento: R$%.2f\0ANovo salario: R$%.2f\0A\00"
@.str.7 = [57 x i8] c"\0ACargo: Secretario\0AAumento: R$%.2f\0ANovo salario: R$%.2f\0A\00"
@.str.8 = [52 x i8] c"\0ACargo: Caixa\0AAumento: R$%.2f\0ANovo salario: R$%.2f\0A\00"
@.str.9 = [54 x i8] c"\0ACargo: Gerente\0AAumento: R$%.2f\0ANovo salario: R$%.2f\0A\00"
@.str.10 = [54 x i8] c"\0ACargo: Diretor\0AAumento: R$%.2f\0ANovo salario: R$%.2f\0A\00"
define void @ex9() {
%1 = alloca i32
%2 = alloca float
%3 = alloca float
%4 = alloca float
%5 = call i32 @print(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0))
%6 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0))
%7 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32* %1)
br label %8
8: ; preds = %17, %0
%9 = load i32, i32* %1
%10 = icmp sgt i32 %9, 0
br i1 %10, label %11, label %14
11: ; preds = %8
%12 = load i32, i32* %1
%13 = icmp slt i32 %12, 6
br label %14
14: ; preds = %11, %8
%15 = phi i1 [ false, %8 ], [ %13, %11 ]
%16 = xor i1 %15, true
br i1 %16, label %17, label %20
17: ; preds = %14
%18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.3, i64 0, i64 0))
%19 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32* %1)
br label %8
20: ; preds = %14
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.4, i64 0, i64 0))
%22 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), float* %2)
br label %23
23: ; preds = %27, %20
%24 = load float, float* %2
%25 = fcmp ogt float %24, 0.000000e+00
%26 = xor i1 %25, true
br i1 %26, label %27, label %30
27: ; preds = %23
%28 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.3, i64 0, i64 0))
%29 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), float* %2)
br label %23
30: ; preds = %23
%31 = load i32, i32* %1
%32 = icmp eq i32 %31, 1
br i1 %32, label %33, label %46
33: ; preds = %30
%34 = load float, float* %2
%35 = fpext float %34 to double
%36 = fmul double 5.000000e-01, %35
%37 = fptrunc double %36 to float
store float %37, float* %3
%38 = load float, float* %2
%39 = load float, float* %3
%40 = fadd float %38, %39
store float %40, float* %4
%41 = load float, float* %3
%42 = fpext float %41 to double
%43 = load float, float* %4
%44 = fpext float %43 to double
%45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.6, i64 0, i64 0), double %42, double %44)
br label %114
46: ; preds = %30
%47 = load i32, i32* %1
%48 = icmp eq i32 %47, 2
br i1 %48, label %49, label %62
49: ; preds = %46
%50 = load float, float* %2
%51 = fpext float %50 to double
%52 = fmul double 3.500000e-01, %51
%53 = fptrunc double %52 to float
store float %53, float* %3
%54 = load float, float* %2
%55 = load float, float* %3
%56 = fadd float %54, %55
store float %56, float* %4
%57 = load float, float* %3
%58 = fpext float %57 to double
%59 = load float, float* %4
%60 = fpext float %59 to double
%61 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.7, i64 0, i64 0), double %58, double %60)
br label %113
62: ; preds = %46
%63 = load i32, i32* %1
%64 = icmp eq i32 %63, 3
br i1 %64, label %65, label %78
65: ; preds = %62
%66 = load float, float* %2
%67 = fpext float %66 to double
%68 = fmul double 2.000000e-01, %67
%69 = fptrunc double %68 to float
store float %69, float* %3
%70 = load float, float* %2
%71 = load float, float* %3
%72 = fadd float %70, %71
store float %72, float* %4
%73 = load float, float* %3
%74 = fpext float %73 to double
%75 = load float, float* %4
%76 = fpext float %75 to double
%77 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.8, i64 0, i64 0), double %74, double %76)
br label %112
78: ; preds = %62
%79 = load i32, i32* %1
%80 = icmp eq i32 %79, 4
br i1 %80, label %81, label %94
81: ; preds = %78
%82 = load float, float* %2
%83 = fpext float %82 to double
%84 = fmul double 1.000000e-01, %83
%85 = fptrunc double %84 to float
store float %85, float* %3
%86 = load float, float* %2
%87 = load float, float* %3
%88 = fadd float %86, %87
store float %88, float* %4
%89 = load float, float* %3
%90 = fpext float %89 to double
%91 = load float, float* %4
%92 = fpext float %91 to double
%93 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.9, i64 0, i64 0), double %90, double %92)
br label %111
94: ; preds = %78
%95 = load i32, i32* %1
%96 = icmp eq i32 %95, 5
br i1 %96, label %97, label %110
97: ; preds = %94
%98 = load float, float* %2
%99 = fpext float %98 to double
%100 = fmul double 0.000000e+00, %99
%101 = fptrunc double %100 to float
store float %101, float* %3
%102 = load float, float* %2
%103 = load float, float* %3
%104 = fadd float %102, %103
store float %104, float* %4
%105 = load float, float* %3
%106 = fpext float %105 to double
%107 = load float, float* %4
%108 = fpext float %107 to double
%109 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.10, i64 0, i64 0), double %106, double %108)
br label %110
110: ; preds = %97, %94
br label %111
111: ; preds = %110, %81
br label %112
112: ; preds = %111, %65
br label %113
113: ; preds = %112, %49
br label %114
114: ; preds = %113, %33
%115 = call i32 @print(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [33 x i8] c"\0A------------------------------\0A\00"
@.str.1 = [43 x i8] c"Informe o codigo de cargo do funcionario: \00"
@.str.2 = [3 x i8] c"%d\00"
@.str.3 = [34 x i8] c"Valor invalido, tente novamente: \00"
@.str.4 = [41 x i8] c"Informe o salario atual do funcionario: \00"
@.str.5 = [3 x i8] c"%f\00"
@.str.6 = [58 x i8] c"\0ACargo: Escrituario\0AAumento: R$%.2f\0ANovo salario: R$%.2f\0A\00"
@.str.7 = [57 x i8] c"\0ACargo: Secretario\0AAumento: R$%.2f\0ANovo salario: R$%.2f\0A\00"
@.str.8 = [52 x i8] c"\0ACargo: Caixa\0AAumento: R$%.2f\0ANovo salario: R$%.2f\0A\00"
@.str.9 = [54 x i8] c"\0ACargo: Gerente\0AAumento: R$%.2f\0ANovo salario: R$%.2f\0A\00"
@.str.10 = [54 x i8] c"\0ACargo: Diretor\0AAumento: R$%.2f\0ANovo salario: R$%.2f\0A\00"
define void @ex9() {
%1 = alloca i32
%2 = alloca float
%3 = tail call i32 @print(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0))
%4 = bitcast i32* %1 to i8*
%5 = bitcast float* %2 to i8*
%6 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0))
%7 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32* %1)
%8 = load i32, i32* %1
%9 = add i32 %8, -6
%10 = icmp ult i32 %9, -5
br i1 %10, label %11, label %17
11: ; preds = %0, %11
%12 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str.3, i64 0, i64 0))
%13 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32* %1)
%14 = load i32, i32* %1
%15 = add i32 %14, -6
%16 = icmp ult i32 %15, -5
br i1 %16, label %11, label %17
17: ; preds = %11, %0
%18 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @.str.4, i64 0, i64 0))
%19 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), float* %2)
%20 = load float, float* %2
%21 = fcmp ule float %20, 0.000000e+00
br i1 %21, label %22, label %27
22: ; preds = %17, %22
%23 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str.3, i64 0, i64 0))
%24 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), float* %2)
%25 = load float, float* %2
%26 = fcmp ule float %25, 0.000000e+00
br i1 %26, label %22, label %27
27: ; preds = %22, %17
%28 = phi float [ %20, %17 ], [ %25, %22 ]
%29 = load i32, i32* %1
switch i32 %29, label %53 [
i32 1, label %30
i32 2, label %32
i32 3, label %36
i32 4, label %40
i32 5, label %44
]
30: ; preds = %27
%31 = fmul float %28, 5.000000e-01
br label %46
32: ; preds = %27
%33 = fpext float %28 to double
%34 = fmul double %33, 3.500000e-01
%35 = fptrunc double %34 to float
br label %46
36: ; preds = %27
%37 = fpext float %28 to double
%38 = fmul double %37, 2.000000e-01
%39 = fptrunc double %38 to float
br label %46
40: ; preds = %27
%41 = fpext float %28 to double
%42 = fmul double %41, 1.000000e-01
%43 = fptrunc double %42 to float
br label %46
44: ; preds = %27
%45 = fmul float %28, 0.000000e+00
br label %46
46: ; preds = %30, %36, %44, %40, %32
%47 = phi float [ %35, %32 ], [ %43, %40 ], [ %45, %44 ], [ %39, %36 ], [ %31, %30 ]
%48 = phi i8* [ getelementptr inbounds ([57 x i8], [57 x i8]* @.str.7, i64 0, i64 0), %32 ], [ getelementptr inbounds ([54 x i8], [54 x i8]* @.str.9, i64 0, i64 0), %40 ], [ getelementptr inbounds ([54 x i8], [54 x i8]* @.str.10, i64 0, i64 0), %44 ], [ getelementptr inbounds ([52 x i8], [52 x i8]* @.str.8, i64 0, i64 0), %36 ], [ getelementptr inbounds ([58 x i8], [58 x i8]* @.str.6, i64 0, i64 0), %30 ]
%49 = fadd float %28, %47
%50 = fpext float %47 to double
%51 = fpext float %49 to double
%52 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %48, double %50, double %51)
br label %53
53: ; preds = %46, %27
%54 = call i32 @print(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0))
ret void
}