#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*/ printf(char *, float, float, int);
int /*<<< orphan*/ scanf(char *, float *);
int main(void) {
  float x;
  scanf("%f", &x);
  if (x <= 400)
    printf("Novo salario: %0.2f\nReajuste ganho: %0.2f\nEm percentual: %d %\n",
           x + x * .15, x * .15, 15);
  else if (x <= 800)
    printf("Novo salario: %0.2f\nReajuste ganho: %0.2f\nEm percentual: %d %\n",
           x + x * .12, x * .12, 12);
  else if (x <= 1200)
    printf("Novo salario: %0.2f\nReajuste ganho: %0.2f\nEm percentual: %d %\n",
           x + x * .10, x * .10, 10);
  else if (x <= 2000)
    printf("Novo salario: %0.2f\nReajuste ganho: %0.2f\nEm percentual: %d %\n",
           x + x * .7, x * .7, 7);
  else
    printf("Novo salario: %0.2f\nReajuste ganho: %0.2f\nEm percentual: %d %\n",
           x + x * .4, x * .4, 4);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xf02(%rip),%rdi
lea    -0x8(%rbp),%rsi
call   1040 <scanf@plt>
movss  0xeb9(%rip),%xmm0
ucomiss -0x8(%rbp),%xmm0
jb     11a6 <main+0x86>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xec5(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x8(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xea8(%rip),%xmm2
mulsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
lea    0xea4(%rip),%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
jmp    133a <main+0x21a>
movss  0xe56(%rip),%xmm0
ucomiss -0x8(%rbp),%xmm0
jb     120d <main+0xed>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe56(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x8(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xe39(%rip),%xmm2
mulsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
lea    0xe3d(%rip),%rdi
mov    $0xc,%esi
call   1030 <printf@plt>
jmp    1335 <main+0x215>
movss  0xdf3(%rip),%xmm0
ucomiss -0x8(%rbp),%xmm0
jb     1274 <main+0x154>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xde7(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x8(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xdca(%rip),%xmm2
mulsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
lea    0xdd6(%rip),%rdi
mov    $0xa,%esi
call   1030 <printf@plt>
jmp    1330 <main+0x210>
movss  0xd90(%rip),%xmm0
ucomiss -0x8(%rbp),%xmm0
jb     12db <main+0x1bb>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd78(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x8(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xd5b(%rip),%xmm2
mulsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
lea    0xd6f(%rip),%rdi
mov    $0x7,%esi
call   1030 <printf@plt>
jmp    132b <main+0x20b>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd1b(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x8(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xcfe(%rip),%xmm2
mulsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
lea    0xd1a(%rip),%rdi
mov    $0x4,%esi
call   1030 <printf@plt>
jmp    1330 <main+0x210>
jmp    1335 <main+0x215>
jmp    133a <main+0x21a>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
lea    0xf10(%rip),%rdi
lea    0x4(%rsp),%rsi
call   1040 <scanf@plt>
movss  0x4(%rsp),%xmm0
movss  0xec0(%rip),%xmm1
ucomiss %xmm0,%xmm1
jae    11a1 <main+0x81>
movss  0xeb7(%rip),%xmm1
ucomiss %xmm0,%xmm1
jae    11cb <main+0xab>
movss  0xeae(%rip),%xmm1
ucomiss %xmm0,%xmm1
jae    11f5 <main+0xd5>
movss  0xea1(%rip),%xmm1
ucomiss %xmm0,%xmm1
cvtss2sd %xmm0,%xmm0
jae    121f <main+0xff>
movsd  0xeb0(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm1
lea    0xea4(%rip),%rdi
mov    $0x4,%esi
jmp    1243 <main+0x123>
cvtss2sd %xmm0,%xmm0
movsd  0xe63(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm1
lea    0xe77(%rip),%rdi
mov    $0xf,%esi
jmp    1243 <main+0x123>
cvtss2sd %xmm0,%xmm0
movsd  0xe41(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm1
lea    0xe4d(%rip),%rdi
mov    $0xc,%esi
jmp    1243 <main+0x123>
cvtss2sd %xmm0,%xmm0
movsd  0xe1f(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm1
lea    0xe23(%rip),%rdi
mov    $0xa,%esi
jmp    1243 <main+0x123>
movsd  0xe01(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm1
lea    0xdfd(%rip),%rdi
mov    $0x7,%esi
call   1030 <printf@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
@.str = [3 x i8] c"%f\00"
@.str.1 = [63 x i8] c"Novo salario: %0.2f\0AReajuste ganho: %0.2f\0AEm percentual: %d %\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca float
store i32 0, i32* %1
%3 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float* %2)
%4 = load float, float* %2
%5 = fcmp ole float %4, 4.000000e+02
br i1 %5, label %6, label %18
6: ; preds = %0
%7 = load float, float* %2
%8 = fpext float %7 to double
%9 = load float, float* %2
%10 = fpext float %9 to double
%11 = call double @llvm.fmuladd.f64(double %10, double 1.500000e-01, double %8)
%12 = fptrunc double %11 to float
%13 = load float, float* %2
%14 = fpext float %13 to double
%15 = fmul double %14, 1.500000e-01
%16 = fptrunc double %15 to float
%17 = call i32 @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0), float %12, float %16, i32 15)
br label %78
18: ; preds = %0
%19 = load float, float* %2
%20 = fcmp ole float %19, 8.000000e+02
br i1 %20, label %21, label %33
21: ; preds = %18
%22 = load float, float* %2
%23 = fpext float %22 to double
%24 = load float, float* %2
%25 = fpext float %24 to double
%26 = call double @llvm.fmuladd.f64(double %25, double 1.200000e-01, double %23)
%27 = fptrunc double %26 to float
%28 = load float, float* %2
%29 = fpext float %28 to double
%30 = fmul double %29, 1.200000e-01
%31 = fptrunc double %30 to float
%32 = call i32 @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0), float %27, float %31, i32 12)
br label %77
33: ; preds = %18
%34 = load float, float* %2
%35 = fcmp ole float %34, 1.200000e+03
br i1 %35, label %36, label %48
36: ; preds = %33
%37 = load float, float* %2
%38 = fpext float %37 to double
%39 = load float, float* %2
%40 = fpext float %39 to double
%41 = call double @llvm.fmuladd.f64(double %40, double 1.000000e-01, double %38)
%42 = fptrunc double %41 to float
%43 = load float, float* %2
%44 = fpext float %43 to double
%45 = fmul double %44, 1.000000e-01
%46 = fptrunc double %45 to float
%47 = call i32 @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0), float %42, float %46, i32 10)
br label %76
48: ; preds = %33
%49 = load float, float* %2
%50 = fcmp ole float %49, 2.000000e+03
br i1 %50, label %51, label %63
51: ; preds = %48
%52 = load float, float* %2
%53 = fpext float %52 to double
%54 = load float, float* %2
%55 = fpext float %54 to double
%56 = call double @llvm.fmuladd.f64(double %55, double 0x3FE6666666666666, double %53)
%57 = fptrunc double %56 to float
%58 = load float, float* %2
%59 = fpext float %58 to double
%60 = fmul double %59, 0x3FE6666666666666
%61 = fptrunc double %60 to float
%62 = call i32 @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0), float %57, float %61, i32 7)
br label %75
63: ; preds = %48
%64 = load float, float* %2
%65 = fpext float %64 to double
%66 = load float, float* %2
%67 = fpext float %66 to double
%68 = call double @llvm.fmuladd.f64(double %67, double 4.000000e-01, double %65)
%69 = fptrunc double %68 to float
%70 = load float, float* %2
%71 = fpext float %70 to double
%72 = fmul double %71, 4.000000e-01
%73 = fptrunc double %72 to float
%74 = call i32 @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0), float %69, float %73, i32 4)
br label %75
75: ; preds = %63, %51
br label %76
76: ; preds = %75, %36
br label %77
77: ; preds = %76, %21
br label %78
78: ; preds = %77, %6
ret i32 0
}

LLVM IR (-O2):
@.str = [3 x i8] c"%f\00"
@.str.1 = [63 x i8] c"Novo salario: %0.2f\0AReajuste ganho: %0.2f\0AEm percentual: %d %\0A\00"
define i32 @main() {
%1 = alloca float
%2 = bitcast float* %1 to i8*
%3 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), float* %1)
%4 = load float, float* %1
%5 = fcmp ugt float %4, 4.000000e+02
br i1 %5, label %13, label %6
6: ; preds = %0
%7 = fpext float %4 to double
%8 = call double @llvm.fmuladd.f64(double %7, double 1.500000e-01, double %7)
%9 = fptrunc double %8 to float
%10 = fmul double %7, 1.500000e-01
%11 = fptrunc double %10 to float
%12 = call i32 @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0), float %9, float %11, i32 15)
br label %46
13: ; preds = %0
%14 = fcmp ugt float %4, 8.000000e+02
br i1 %14, label %22, label %15
15: ; preds = %13
%16 = fpext float %4 to double
%17 = call double @llvm.fmuladd.f64(double %16, double 1.200000e-01, double %16)
%18 = fptrunc double %17 to float
%19 = fmul double %16, 1.200000e-01
%20 = fptrunc double %19 to float
%21 = call i32 @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0), float %18, float %20, i32 12)
br label %46
22: ; preds = %13
%23 = fcmp ugt float %4, 1.200000e+03
br i1 %23, label %31, label %24
24: ; preds = %22
%25 = fpext float %4 to double
%26 = call double @llvm.fmuladd.f64(double %25, double 1.000000e-01, double %25)
%27 = fptrunc double %26 to float
%28 = fmul double %25, 1.000000e-01
%29 = fptrunc double %28 to float
%30 = call i32 @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0), float %27, float %29, i32 10)
br label %46
31: ; preds = %22
%32 = fcmp ugt float %4, 2.000000e+03
%33 = fpext float %4 to double
br i1 %32, label %40, label %34
34: ; preds = %31
%35 = call double @llvm.fmuladd.f64(double %33, double 0x3FE6666666666666, double %33)
%36 = fptrunc double %35 to float
%37 = fmul double %33, 0x3FE6666666666666
%38 = fptrunc double %37 to float
%39 = call i32 @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0), float %36, float %38, i32 7)
br label %46
40: ; preds = %31
%41 = call double @llvm.fmuladd.f64(double %33, double 4.000000e-01, double %33)
%42 = fptrunc double %41 to float
%43 = fmul double %33, 4.000000e-01
%44 = fptrunc double %43 to float
%45 = call i32 @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.1, i64 0, i64 0), float %42, float %44, i32 4)
br label %46
46: ; preds = %15, %34, %40, %24, %6
ret i32 0
}