#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 pow(double, double);
int /*<<< orphan*/ printf(char *, ...);
double qCF(double);
double qDBO(double);
double qDT(double);
double qFT(double);
double qNT(double);
double qOxi(double);
double qST(double);
double qTU(double);
double qpH(double);
int /*<<< orphan*/ scanf(char *, double *);
int main(void) {
  double IQA, oxi, cf, ph, dbo, ft, nt, tu, dt, st, r[9];
  printf("Coliformes Fecais (NMP/100 ml):");
  scanf("%lf", &cf);
  printf("Potencial Hidrogeniônico (pH):");
  scanf("%lf", &ph);
  printf("DBO - Demanda Bioquímica de Oxigênio(mg/L): ");
  scanf("%lf", &dbo);
  printf("Nitrato Total (mg/L): ");
  scanf("%lf", &nt);
  printf("Fosfato Total (mg/L): ");
  scanf("%lf", &ft);
  printf("Variação de Temperatura(°C):");
  scanf("%lf", &dt);
  printf("Turbidez (UNT): ");
  scanf("%lf", &tu);
  printf("OD - Oxigênio Dissolvido (%% saturação): ");
  scanf("%lf", &oxi);
  printf("Sólidos Totais (mg/L): ");
  scanf("%lf", &st);
  r[0] = qCF(cf);
  r[1] = qDBO(dbo);
  r[2] = qFT(ft);
  r[3] = qOxi(oxi);
  r[4] = qpH(ph);
  r[5] = qST(st);
  r[6] = qTU(tu);
  r[7] = qDT(dt);
  r[8] = qNT(nt);
  IQA = pow(r[0], 0.15) * pow(r[4], 0.12) * pow(r[1], 0.10) * pow(r[8], 0.10) *
        pow(r[2], 0.10) * pow(r[7], 0.10) * pow(r[6], 0.08) * pow(r[5], 0.08) *
        pow(r[3], 0.17);
  if (IQA < 20 && IQA >= 0) {
    printf("IQA: %lf\nQualidade: Péssima\n", IQA);
  } else if (IQA < 37 && IQA >= 20) {
    printf("IQA: %lf\nQualidade: Ruim\n", IQA);
  } else if (IQA < 51 && IQA >= 37) {
    printf("IQA: %lf\nQualidade: Aceitável\n", IQA);
  } else if (IQA < 80 && IQA >= 51) {
    printf("IQA: %lf\nQualidade: Boa\n", IQA);
  } else if (IQA >= 80) {
    printf("IQA: %lf\nQualidade: Ótima\n", IQA);
  } else {
    printf("Sem valores o suficiente.\n");
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xe0,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xe6f(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
lea    0xe81(%rip),%rdi
lea    -0x20(%rbp),%rsi
call   10b0 <scanf@plt>
lea    0xe75(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
lea    0xe63(%rip),%rdi
lea    -0x28(%rbp),%rsi
call   10b0 <scanf@plt>
lea    0xe77(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
lea    0xe45(%rip),%rdi
lea    -0x30(%rbp),%rsi
call   10b0 <scanf@plt>
lea    0xe88(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
lea    0xe27(%rip),%rdi
lea    -0x40(%rbp),%rsi
call   10b0 <scanf@plt>
lea    0xe81(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
lea    0xe09(%rip),%rdi
lea    -0x38(%rbp),%rsi
call   10b0 <scanf@plt>
lea    0xe7a(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
lea    0xdeb(%rip),%rdi
lea    -0x50(%rbp),%rsi
call   10b0 <scanf@plt>
lea    0xe7c(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
lea    0xdcd(%rip),%rdi
lea    -0x48(%rbp),%rsi
call   10b0 <scanf@plt>
lea    0xe6f(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
lea    0xdaf(%rip),%rdi
lea    -0x18(%rbp),%rsi
call   10b0 <scanf@plt>
lea    0xe7e(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
lea    0xd91(%rip),%rdi
lea    -0x58(%rbp),%rsi
call   10b0 <scanf@plt>
movsd  -0x20(%rbp),%xmm0
call   1030 <qCF@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   10c0 <qDBO@plt>
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   10a0 <qFT@plt>
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   10e0 <qOxi@plt>
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
call   1060 <qpH@plt>
movsd  %xmm0,-0x80(%rbp)
movsd  -0x58(%rbp),%xmm0
call   1050 <qST@plt>
movsd  %xmm0,-0x78(%rbp)
movsd  -0x48(%rbp),%xmm0
call   1040 <qTU@plt>
movsd  %xmm0,-0x70(%rbp)
movsd  -0x50(%rbp),%xmm0
call   1080 <qDT@plt>
movsd  %xmm0,-0x68(%rbp)
movsd  -0x40(%rbp),%xmm0
call   1090 <qNT@plt>
movsd  %xmm0,-0x60(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
movsd  0xca5(%rip),%xmm1
call   10d0 <pow@plt>
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  0xc83(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  0xc4f(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  0xc26(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  0xbfa(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  0xbd1(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  0xba0(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0xb77(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  0xb43(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xb1a(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    151b <main+0x35b>
movsd  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     151b <main+0x35b>
movsd  -0x10(%rbp),%xmm0
lea    0xc51(%rip),%rdi
mov    $0x1,%al
call   1070 <printf@plt>
jmp    1632 <main+0x472>
movsd  0xb0d(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    155d <main+0x39d>
movsd  -0x10(%rbp),%xmm0
movsd  0xac5(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     155d <main+0x39d>
movsd  -0x10(%rbp),%xmm0
lea    0xc2d(%rip),%rdi
mov    $0x1,%al
call   1070 <printf@plt>
jmp    162d <main+0x46d>
movsd  0xad3(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    159f <main+0x3df>
movsd  -0x10(%rbp),%xmm0
movsd  0xab3(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     159f <main+0x3df>
movsd  -0x10(%rbp),%xmm0
lea    0xc05(%rip),%rdi
mov    $0x1,%al
call   1070 <printf@plt>
jmp    1628 <main+0x468>
movsd  0xa99(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    15e1 <main+0x421>
movsd  -0x10(%rbp),%xmm0
movsd  0xa79(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     15e1 <main+0x421>
movsd  -0x10(%rbp),%xmm0
lea    0xbe3(%rip),%rdi
mov    $0x1,%al
call   1070 <printf@plt>
jmp    1623 <main+0x463>
movsd  -0x10(%rbp),%xmm0
movsd  0xa52(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1610 <main+0x450>
movsd  -0x10(%rbp),%xmm0
lea    0xbcd(%rip),%rdi
mov    $0x1,%al
call   1070 <printf@plt>
jmp    161e <main+0x45e>
lea    0xbd6(%rip),%rdi
mov    $0x0,%al
call   1070 <printf@plt>
jmp    1623 <main+0x463>
jmp    1628 <main+0x468>
jmp    162d <main+0x46d>
jmp    1632 <main+0x472>
xor    %eax,%eax
add    $0xe0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0x90,%rsp
lea    0xe69(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0xe7b(%rip),%rbx
lea    0x80(%rsp),%rsi
mov    %rbx,%rdi
call   10c0 <scanf@plt>
lea    0xe68(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x78(%rsp),%rsi
mov    %rbx,%rdi
call   10c0 <scanf@plt>
lea    0xe6d(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x70(%rsp),%rsi
mov    %rbx,%rdi
call   10c0 <scanf@plt>
lea    0xe81(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x60(%rsp),%rsi
mov    %rbx,%rdi
call   10c0 <scanf@plt>
lea    0xe7d(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x68(%rsp),%rsi
mov    %rbx,%rdi
call   10c0 <scanf@plt>
lea    0xe79(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x50(%rsp),%rsi
mov    %rbx,%rdi
call   10c0 <scanf@plt>
lea    0xe7e(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x58(%rsp),%rsi
mov    %rbx,%rdi
call   10c0 <scanf@plt>
lea    0xe74(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x88(%rsp),%rsi
mov    %rbx,%rdi
call   10c0 <scanf@plt>
lea    0xe83(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x48(%rsp),%rsi
mov    %rbx,%rdi
call   10c0 <scanf@plt>
movsd  0x80(%rsp),%xmm0
call   1030 <qCF@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x70(%rsp),%xmm0
call   10d0 <qDBO@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0x68(%rsp),%xmm0
call   10b0 <qFT@plt>
movsd  %xmm0,(%rsp)
movsd  0x88(%rsp),%xmm0
call   10f0 <qOxi@plt>
movsd  %xmm0,0x40(%rsp)
movsd  0x78(%rsp),%xmm0
call   1070 <qpH@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0x48(%rsp),%xmm0
call   1060 <qST@plt>
movsd  %xmm0,0x18(%rsp)
movsd  0x58(%rsp),%xmm0
call   1040 <qTU@plt>
movsd  %xmm0,0x38(%rsp)
movsd  0x50(%rsp),%xmm0
call   1090 <qDT@plt>
movsd  %xmm0,0x30(%rsp)
movsd  0x60(%rsp),%xmm0
call   10a0 <qNT@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0xc82(%rip),%xmm1
movsd  0x8(%rsp),%xmm0
call   10e0 <pow@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0xc71(%rip),%xmm1
movsd  0x28(%rsp),%xmm0
call   10e0 <pow@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0xc5a(%rip),%xmm1
movsd  0x10(%rsp),%xmm0
call   10e0 <pow@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x20(%rsp),%xmm0
movsd  0xc35(%rip),%xmm1
call   10e0 <pow@plt>
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
movsd  0xc17(%rip),%xmm1
call   10e0 <pow@plt>
mulsd  0x10(%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x30(%rsp),%xmm0
movsd  0xbf9(%rip),%xmm1
call   10e0 <pow@plt>
mulsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0xbea(%rip),%xmm1
movsd  0x38(%rsp),%xmm0
call   10e0 <pow@plt>
mulsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x18(%rsp),%xmm0
movsd  0xbc7(%rip),%xmm1
call   10e0 <pow@plt>
mulsd  (%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0xbb7(%rip),%xmm1
movsd  0x40(%rsp),%xmm0
call   10e0 <pow@plt>
mulsd  0x18(%rsp),%xmm0
movsd  0xba6(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    149e <main+0x2ce>
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     149e <main+0x2ce>
lea    0xcc7(%rip),%rdi
jmp    1520 <main+0x350>
movsd  0xb8a(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    14bf <main+0x2ef>
ucomisd 0xb74(%rip),%xmm0
jb     14bf <main+0x2ef>
lea    0xcc1(%rip),%rdi
jmp    1520 <main+0x350>
movsd  0xb71(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    14e0 <main+0x310>
ucomisd 0xb5b(%rip),%xmm0
jb     14e0 <main+0x310>
lea    0xcba(%rip),%rdi
jmp    1520 <main+0x350>
movsd  0xb58(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1501 <main+0x331>
ucomisd 0xb42(%rip),%xmm0
jb     1501 <main+0x331>
lea    0xcb9(%rip),%rdi
jmp    1520 <main+0x350>
ucomisd 0xb37(%rip),%xmm0
jae    1519 <main+0x349>
lea    0xcdb(%rip),%rdi
call   1050 <puts@plt>
jmp    1527 <main+0x357>
lea    0xcb1(%rip),%rdi
mov    $0x1,%al
call   1080 <printf@plt>
xor    %eax,%eax
add    $0x90,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@.str = [32 x i8] c"Coliformes Fecais (NMP/100 ml):\00"
@.str.1 = [4 x i8] c"%lf\00"
@.str.2 = [32 x i8] c"Potencial Hidrogeni\C3\B4nico (pH):\00"
@.str.3 = [47 x i8] c"DBO - Demanda Bioqu\C3\ADmica de Oxig\C3\AAnio(mg/L): \00"
@.str.4 = [23 x i8] c"Nitrato Total (mg/L): \00"
@.str.5 = [23 x i8] c"Fosfato Total (mg/L): \00"
@.str.6 = [32 x i8] c"Varia\C3\A7\C3\A3o de Temperatura(\C2\B0C):\00"
@.str.7 = [17 x i8] c"Turbidez (UNT): \00"
@.str.8 = [45 x i8] c"OD - Oxig\C3\AAnio Dissolvido (%% satura\C3\A7\C3\A3o): \00"
@.str.9 = [25 x i8] c"S\C3\B3lidos Totais (mg/L): \00"
@.str.10 = [30 x i8] c"IQA: %lf\0AQualidade: P\C3\A9ssima\0A\00"
@.str.11 = [26 x i8] c"IQA: %lf\0AQualidade: Ruim\0A\00"
@.str.12 = [32 x i8] c"IQA: %lf\0AQualidade: Aceit\C3\A1vel\0A\00"
@.str.13 = [25 x i8] c"IQA: %lf\0AQualidade: Boa\0A\00"
@.str.14 = [28 x i8] c"IQA: %lf\0AQualidade: \C3\93tima\0A\00"
@.str.15 = [27 x i8] c"Sem valores o suficiente.\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
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca [9 x double]
store i32 0, i32* %1
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str, i64 0, i64 0))
%14 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %4)
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.2, i64 0, i64 0))
%16 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %5)
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.3, i64 0, i64 0))
%18 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %6)
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.4, i64 0, i64 0))
%20 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %8)
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.5, i64 0, i64 0))
%22 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %7)
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0))
%24 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %10)
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.7, i64 0, i64 0))
%26 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %9)
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.8, i64 0, i64 0))
%28 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %3)
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.9, i64 0, i64 0))
%30 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %11)
%31 = load double, double* %4
%32 = call double @qCF(double %31)
%33 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 0
store double %32, double* %33
%34 = load double, double* %6
%35 = call double @qDBO(double %34)
%36 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 1
store double %35, double* %36
%37 = load double, double* %7
%38 = call double @qFT(double %37)
%39 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 2
store double %38, double* %39
%40 = load double, double* %3
%41 = call double @qOxi(double %40)
%42 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 3
store double %41, double* %42
%43 = load double, double* %5
%44 = call double @qpH(double %43)
%45 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 4
store double %44, double* %45
%46 = load double, double* %11
%47 = call double @qST(double %46)
%48 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 5
store double %47, double* %48
%49 = load double, double* %9
%50 = call double @qTU(double %49)
%51 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 6
store double %50, double* %51
%52 = load double, double* %10
%53 = call double @qDT(double %52)
%54 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 7
store double %53, double* %54
%55 = load double, double* %8
%56 = call double @qNT(double %55)
%57 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 8
store double %56, double* %57
%58 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 0
%59 = load double, double* %58
%60 = call double @pow(double %59, double 1.500000e-01)
%61 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 4
%62 = load double, double* %61
%63 = call double @pow(double %62, double 1.200000e-01)
%64 = fmul double %60, %63
%65 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 1
%66 = load double, double* %65
%67 = call double @pow(double %66, double 1.000000e-01)
%68 = fmul double %64, %67
%69 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 8
%70 = load double, double* %69
%71 = call double @pow(double %70, double 1.000000e-01)
%72 = fmul double %68, %71
%73 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 2
%74 = load double, double* %73
%75 = call double @pow(double %74, double 1.000000e-01)
%76 = fmul double %72, %75
%77 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 7
%78 = load double, double* %77
%79 = call double @pow(double %78, double 1.000000e-01)
%80 = fmul double %76, %79
%81 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 6
%82 = load double, double* %81
%83 = call double @pow(double %82, double 8.000000e-02)
%84 = fmul double %80, %83
%85 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 5
%86 = load double, double* %85
%87 = call double @pow(double %86, double 8.000000e-02)
%88 = fmul double %84, %87
%89 = getelementptr inbounds [9 x double], [9 x double]* %12, i64 0, i64 3
%90 = load double, double* %89
%91 = call double @pow(double %90, double 1.700000e-01)
%92 = fmul double %88, %91
store double %92, double* %2
%93 = load double, double* %2
%94 = fcmp olt double %93, 2.000000e+01
br i1 %94, label %95, label %101
95: ; preds = %0
%96 = load double, double* %2
%97 = fcmp oge double %96, 0.000000e+00
br i1 %97, label %98, label %101
98: ; preds = %95
%99 = load double, double* %2
%100 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.10, i64 0, i64 0), double %99)
br label %140
101: ; preds = %95, %0
%102 = load double, double* %2
%103 = fcmp olt double %102, 3.700000e+01
br i1 %103, label %104, label %110
104: ; preds = %101
%105 = load double, double* %2
%106 = fcmp oge double %105, 2.000000e+01
br i1 %106, label %107, label %110
107: ; preds = %104
%108 = load double, double* %2
%109 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.11, i64 0, i64 0), double %108)
br label %139
110: ; preds = %104, %101
%111 = load double, double* %2
%112 = fcmp olt double %111, 5.100000e+01
br i1 %112, label %113, label %119
113: ; preds = %110
%114 = load double, double* %2
%115 = fcmp oge double %114, 3.700000e+01
br i1 %115, label %116, label %119
116: ; preds = %113
%117 = load double, double* %2
%118 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.12, i64 0, i64 0), double %117)
br label %138
119: ; preds = %113, %110
%120 = load double, double* %2
%121 = fcmp olt double %120, 8.000000e+01
br i1 %121, label %122, label %128
122: ; preds = %119
%123 = load double, double* %2
%124 = fcmp oge double %123, 5.100000e+01
br i1 %124, label %125, label %128
125: ; preds = %122
%126 = load double, double* %2
%127 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.13, i64 0, i64 0), double %126)
br label %137
128: ; preds = %122, %119
%129 = load double, double* %2
%130 = fcmp oge double %129, 8.000000e+01
br i1 %130, label %131, label %134
131: ; preds = %128
%132 = load double, double* %2
%133 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.14, i64 0, i64 0), double %132)
br label %136
134: ; preds = %128
%135 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.15, i64 0, i64 0))
br label %136
136: ; preds = %134, %131
br label %137
137: ; preds = %136, %125
br label %138
138: ; preds = %137, %116
br label %139
139: ; preds = %138, %107
br label %140
140: ; preds = %139, %98
ret i32 0
}

LLVM IR (-O2):
@.str = [32 x i8] c"Coliformes Fecais (NMP/100 ml):\00"
@.str.1 = [4 x i8] c"%lf\00"
@.str.2 = [32 x i8] c"Potencial Hidrogeni\C3\B4nico (pH):\00"
@.str.3 = [47 x i8] c"DBO - Demanda Bioqu\C3\ADmica de Oxig\C3\AAnio(mg/L): \00"
@.str.4 = [23 x i8] c"Nitrato Total (mg/L): \00"
@.str.5 = [23 x i8] c"Fosfato Total (mg/L): \00"
@.str.6 = [32 x i8] c"Varia\C3\A7\C3\A3o de Temperatura(\C2\B0C):\00"
@.str.7 = [17 x i8] c"Turbidez (UNT): \00"
@.str.8 = [45 x i8] c"OD - Oxig\C3\AAnio Dissolvido (%% satura\C3\A7\C3\A3o): \00"
@.str.9 = [25 x i8] c"S\C3\B3lidos Totais (mg/L): \00"
@.str.10 = [30 x i8] c"IQA: %lf\0AQualidade: P\C3\A9ssima\0A\00"
@.str.11 = [26 x i8] c"IQA: %lf\0AQualidade: Ruim\0A\00"
@.str.12 = [32 x i8] c"IQA: %lf\0AQualidade: Aceit\C3\A1vel\0A\00"
@.str.13 = [25 x i8] c"IQA: %lf\0AQualidade: Boa\0A\00"
@.str.14 = [28 x i8] c"IQA: %lf\0AQualidade: \C3\93tima\0A\00"
@str = [26 x i8] c"Sem valores o suficiente.\00"
define i32 @main() {
%1 = alloca double
%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 = bitcast double* %1 to i8*
%11 = bitcast double* %2 to i8*
%12 = bitcast double* %3 to i8*
%13 = bitcast double* %4 to i8*
%14 = bitcast double* %5 to i8*
%15 = bitcast double* %6 to i8*
%16 = bitcast double* %7 to i8*
%17 = bitcast double* %8 to i8*
%18 = bitcast double* %9 to i8*
%19 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str, i64 0, i64 0))
%20 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %2)
%21 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.2, i64 0, i64 0))
%22 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %3)
%23 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @.str.3, i64 0, i64 0))
%24 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %4)
%25 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.4, i64 0, i64 0))
%26 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %6)
%27 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.5, i64 0, i64 0))
%28 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %5)
%29 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.6, i64 0, i64 0))
%30 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %8)
%31 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.7, i64 0, i64 0))
%32 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %7)
%33 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.8, i64 0, i64 0))
%34 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %1)
%35 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @.str.9, i64 0, i64 0))
%36 = call i32 @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %9)
%37 = load double, double* %2
%38 = call double @qCF(double %37)
%39 = load double, double* %4
%40 = call double @qDBO(double %39)
%41 = load double, double* %5
%42 = call double @qFT(double %41)
%43 = load double, double* %1
%44 = call double @qOxi(double %43)
%45 = load double, double* %3
%46 = call double @qpH(double %45)
%47 = load double, double* %9
%48 = call double @qST(double %47)
%49 = load double, double* %7
%50 = call double @qTU(double %49)
%51 = load double, double* %8
%52 = call double @qDT(double %51)
%53 = load double, double* %6
%54 = call double @qNT(double %53)
%55 = call double @pow(double %38, double 1.500000e-01)
%56 = call double @pow(double %46, double 1.200000e-01)
%57 = fmul double %55, %56
%58 = call double @pow(double %40, double 1.000000e-01)
%59 = fmul double %57, %58
%60 = call double @pow(double %54, double 1.000000e-01)
%61 = fmul double %59, %60
%62 = call double @pow(double %42, double 1.000000e-01)
%63 = fmul double %61, %62
%64 = call double @pow(double %52, double 1.000000e-01)
%65 = fmul double %63, %64
%66 = call double @pow(double %50, double 8.000000e-02)
%67 = fmul double %65, %66
%68 = call double @pow(double %48, double 8.000000e-02)
%69 = fmul double %67, %68
%70 = call double @pow(double %44, double 1.700000e-01)
%71 = fmul double %69, %70
%72 = fcmp olt double %71, 2.000000e+01
%73 = fcmp oge double %71, 0.000000e+00
%74 = and i1 %72, %73
br i1 %74, label %75, label %77
75: ; preds = %0
%76 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.10, i64 0, i64 0), double %71)
br label %101
77: ; preds = %0
%78 = fcmp olt double %71, 3.700000e+01
%79 = fcmp oge double %71, 2.000000e+01
%80 = and i1 %78, %79
br i1 %80, label %81, label %83
81: ; preds = %77
%82 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.11, i64 0, i64 0), double %71)
br label %101
83: ; preds = %77
%84 = fcmp olt double %71, 5.100000e+01
%85 = fcmp oge double %71, 3.700000e+01
%86 = and i1 %84, %85
br i1 %86, label %87, label %89
87: ; preds = %83
%88 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.12, i64 0, i64 0), double %71)
br label %101
89: ; preds = %83
%90 = fcmp olt double %71, 8.000000e+01
%91 = fcmp oge double %71, 5.100000e+01
%92 = and i1 %90, %91
br i1 %92, label %93, label %95
93: ; preds = %89
%94 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @.str.13, i64 0, i64 0), double %71)
br label %101
95: ; preds = %89
%96 = fcmp ult double %71, 8.000000e+01
br i1 %96, label %99, label %97
97: ; preds = %95
%98 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.14, i64 0, i64 0), double %71)
br label %101
99: ; preds = %95
%100 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str, i64 0, i64 0))
br label %101
101: ; preds = %81, %93, %99, %97, %87, %75
ret i32 0
}