#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 *, double);
scalar_t__ scanf(char *, double *, double *);
int main() {
  double ht, vh, sl, sb, inss, ir;
  while (scanf("%lf %lf", &ht, &vh)) {
    if (ht <= 0)
      break;
    sb = ht * vh;
    inss = sb * 0.11;
    if ((sb - inss) < 900)
      ir = 0;
    if ((sb - inss) >= 900 && (sb - inss) < 1800)
      ir = ((sb - inss) * 0.15) - 135;
    if ((sb - inss) >= 1800)
      ir = ((sb - inss) * 0.275) - 360;
    sl = sb - inss - ir;
    printf("%.2lf\n", sl);
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xf02(%rip),%rdi
lea    -0x10(%rbp),%rsi
lea    -0x18(%rbp),%rdx
call   1040 <scanf@plt>
cmp    $0x0,%rax
je     1271 <main+0x151>
xorps  %xmm0,%xmm0
ucomisd -0x10(%rbp),%xmm0
jb     1160 <main+0x40>
jmp    1271 <main+0x151>
movsd  -0x10(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xe91(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x28(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
movsd  0xe6d(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    11a5 <main+0x85>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x28(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  0xe49(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1204 <main+0xe4>
movsd  -0x28(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
movsd  0xe3d(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1204 <main+0xe4>
movsd  -0x28(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  0xe29(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe25(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x28(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  0xdfa(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1247 <main+0x127>
movsd  -0x28(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  0xdf6(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdf2(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x28(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
lea    0xdd9(%rip),%rdi
call   1030 <printf@plt>
jmp    112f <main+0xf>
xor    %eax,%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x28,%rsp
lea    0xf0e(%rip),%rdi
mov    %rsp,%rsi
lea    0x8(%rsp),%rdx
call   1040 <scanf@plt>
test   %rax,%rax
je     1250 <main+0x130>
movsd  (%rsp),%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jae    1250 <main+0x130>
lea    0xee6(%rip),%r14
lea    0xed7(%rip),%r15
mov    %rsp,%r12
lea    0x8(%rsp),%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mulsd  0x8(%rsp),%xmm1
movapd %xmm1,%xmm0
mulsd  0xe6e(%rip),%xmm0
addsd  %xmm1,%xmm0
movapd %xmm0,%xmm1
movsd  0xe66(%rip),%xmm4
cmpltsd %xmm4,%xmm1
andnpd 0x10(%rsp),%xmm1
movapd %xmm0,%xmm2
mulsd  0xe57(%rip),%xmm2
addsd  0xe57(%rip),%xmm2
movapd %xmm0,%xmm3
movsd  0xe53(%rip),%xmm5
cmpltsd %xmm5,%xmm3
andpd  %xmm3,%xmm2
andnpd %xmm1,%xmm3
orpd   %xmm2,%xmm3
movapd %xmm4,%xmm2
cmplesd %xmm0,%xmm2
andpd  %xmm2,%xmm3
andnpd %xmm1,%xmm2
orpd   %xmm3,%xmm2
movapd %xmm0,%xmm1
mulsd  0xe29(%rip),%xmm1
addsd  0xe29(%rip),%xmm1
cmpnlesd %xmm0,%xmm5
andpd  %xmm5,%xmm2
andnpd %xmm1,%xmm5
orpd   %xmm2,%xmm5
movapd %xmm5,0x10(%rsp)
subsd  %xmm5,%xmm0
mov    %r14,%rdi
call   1030 <printf@plt>
mov    %r15,%rdi
mov    %r12,%rsi
mov    %rbx,%rdx
call   1040 <scanf@plt>
test   %rax,%rax
je     1250 <main+0x130>
movsd  (%rsp),%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jb     1180 <main+0x60>
xor    %eax,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@.str = [8 x i8] c"%lf %lf\00"
@.str.1 = [7 x i8] c"%.2lf\0A\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
store i32 0, i32* %1
br label %8
8: ; preds = %51, %0
%9 = call i64 @scanf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), double* %2, double* %3)
%10 = icmp ne i64 %9, 0
br i1 %10, label %11, label %59
11: ; preds = %8
%12 = load double, double* %2
%13 = fcmp ole double %12, 0.000000e+00
br i1 %13, label %14, label %15
14: ; preds = %11
br label %59
15: ; preds = %11
%16 = load double, double* %2
%17 = load double, double* %3
%18 = fmul double %16, %17
store double %18, double* %5
%19 = load double, double* %5
%20 = fmul double %19, 1.100000e-01
store double %20, double* %6
%21 = load double, double* %5
%22 = load double, double* %6
%23 = fsub double %21, %22
%24 = fcmp olt double %23, 9.000000e+02
br i1 %24, label %25, label %26
25: ; preds = %15
store double 0.000000e+00, double* %7
br label %26
26: ; preds = %25, %15
%27 = load double, double* %5
%28 = load double, double* %6
%29 = fsub double %27, %28
%30 = fcmp oge double %29, 9.000000e+02
br i1 %30, label %31, label %41
31: ; preds = %26
%32 = load double, double* %5
%33 = load double, double* %6
%34 = fsub double %32, %33
%35 = fcmp olt double %34, 1.800000e+03
br i1 %35, label %36, label %41
36: ; preds = %31
%37 = load double, double* %5
%38 = load double, double* %6
%39 = fsub double %37, %38
%40 = call double @llvm.fmuladd.f64(double %39, double 1.500000e-01, double -1.350000e+02)
store double %40, double* %7
br label %41
41: ; preds = %36, %31, %26
%42 = load double, double* %5
%43 = load double, double* %6
%44 = fsub double %42, %43
%45 = fcmp oge double %44, 1.800000e+03
br i1 %45, label %46, label %51
46: ; preds = %41
%47 = load double, double* %5
%48 = load double, double* %6
%49 = fsub double %47, %48
%50 = call double @llvm.fmuladd.f64(double %49, double 2.750000e-01, double -3.600000e+02)
store double %50, double* %7
br label %51
51: ; preds = %46, %41
%52 = load double, double* %5
%53 = load double, double* %6
%54 = fsub double %52, %53
%55 = load double, double* %7
%56 = fsub double %54, %55
store double %56, double* %4
%57 = load double, double* %4
%58 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), double %57)
br label %8
59: ; preds = %14, %8
ret i32 0
}

LLVM IR (-O2):
@.str = [8 x i8] c"%lf %lf\00"
@.str.1 = [7 x i8] c"%.2lf\0A\00"
define i32 @main() {
%1 = alloca double
%2 = alloca double
%3 = bitcast double* %1 to i8*
%4 = bitcast double* %2 to i8*
%5 = call i64 @scanf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), double* %1, double* %2)
%6 = icmp eq i64 %5, 0
%7 = load double, double* %1
%8 = fcmp ole double %7, 0.000000e+00
%9 = select i1 %6, i1 true, i1 %8
br i1 %9, label %34, label %10
10: ; preds = %0, %10
%11 = phi double [ %31, %10 ], [ %7, %0 ]
%12 = phi double [ %26, %10 ], [ undef, %0 ]
%13 = load double, double* %2
%14 = fmul double %11, %13
%15 = fmul double %14, 1.100000e-01
%16 = fsub double %14, %15
%17 = fcmp olt double %16, 9.000000e+02
%18 = select i1 %17, double 0.000000e+00, double %12
%19 = fcmp oge double %16, 9.000000e+02
%20 = fcmp olt double %16, 1.800000e+03
%21 = and i1 %19, %20
%22 = call double @llvm.fmuladd.f64(double %16, double 1.500000e-01, double -1.350000e+02)
%23 = select i1 %21, double %22, double %18
%24 = fcmp ult double %16, 1.800000e+03
%25 = call double @llvm.fmuladd.f64(double %16, double 2.750000e-01, double -3.600000e+02)
%26 = select i1 %24, double %23, double %25
%27 = fsub double %16, %26
%28 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), double %27)
%29 = call i64 @scanf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), double* %1, double* %2)
%30 = icmp eq i64 %29, 0
%31 = load double, double* %1
%32 = fcmp ole double %31, 0.000000e+00
%33 = select i1 %30, i1 true, i1 %32
br i1 %33, label %34, label %10
34: ; preds = %10, %0
ret i32 0
}