#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*/ getch();
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, ...);
int /*<<< orphan*/ system(char *);
main() {
  float n[2], larg1, larg2, larg3, larg4, comp1, comp2, comp3, comp4, alt1,
      alt2, alt3, alt4, res, res2, res3, res4, soma;
  int op, op2, i;
  char r;
  for (i = 0; i < 3; i++) {
    printf("\n\nEscolha uma opcao:");
    printf("\n\n1- para calcular piso.");
    printf("\n3- para calcular revestimento.");
    printf("\n4- para calcular revestimento lados diferentes.");
    printf("\n0- SAIR");
    printf("\n\n Escolha uma opcao: ");
    scanf("%d", &op);
    switch (op) {
    case 0:
      return 0;
    case 1:
      printf("\n PISO ");
      printf("\n largura: ");
      scanf("%f", &larg1);
      printf("\n Comprimento: ");
      scanf("%f", &comp1);
      printf("\n Total: %.2f Mt2", larg1 * comp1);
      break;
    case 3:
      printf("\n REVESTIMENTO");
      printf("\n Altura: ");
      scanf("%f", &alt1);
      printf("\n Comprimento: ");
      scanf("%f", &comp1);
      printf("\n Largura: ");
      scanf("%f", &larg1);
      larg1 *= 2;
      comp1 *= 2;
      res = (larg1 + comp1) * alt1;
      printf("\n Total: %.2f Mt2", res);
      break;
    case 4:
      printf("\n Quantidade de paredes (de 1 a 4): ");
      scanf("%d", &op2);
      switch (op2) {
      case 1:
        printf("\nREVESTIMENTO");
        printf("\n Altura: ");
        scanf("%f", &alt1);
        printf("\n Largura: ");
        scanf("%f", &larg1);
        res = alt1 * larg1;
        printf("\n\n Total: %.2f Mt2", res);
        break;
      case 2:
        printf("\n PAREDE 1:");
        printf("\n Altura: ");
        scanf("%f", &alt1);
        printf("\n Largura: ");
        scanf("%f", &larg1);
        res = alt1 * larg1;
        printf("\n Resultado: %.2f Mt2", res);
        printf("\n\n PAREDE 2:");
        printf("\n Altura: ");
        scanf("%f", &alt1);
        printf("\n Largura: ");
        scanf("%f", &larg1);
        res2 = alt1 * larg1;
        printf("\n Resultado: %.2f Mt2", res2);
        printf("\n\n Total: %.2f Mt2", res + res2);
        break;
      case 3:
        printf("\n PAREDE 1:");
        printf("\n Altura: ");
        scanf("%f", &alt1);
        printf("\n Largura: ");
        scanf("%f", &larg1);
        res = alt1 * larg1;
        printf("\n Resultado: %.2f Mt2", res);
        printf("\n\n PAREDE 2:");
        printf("\n Altura: ");
        scanf("%f", &alt1);
        printf("\n Largura: ");
        scanf("%f", &larg1);
        res2 = alt1 * larg1;
        printf("\n Resultado: %.2f Mt2", res2);
        printf("\n\n PAREDE 3:");
        printf("\n Altura: ");
        scanf("%f", &alt1);
        printf("\n Largura: ");
        scanf("%f", &larg1);
        res3 = alt1 * larg1;
        printf("\n Resultado: %.2f Mt2", res3);
        printf("\n\n Total: %.2f Mt2", res + res2 + res3);
        break;
      case 4:
        printf("\n PAREDE 1");
        printf("\n Altura: ");
        scanf("%f", &alt1);
        printf("\n Largura: ");
        scanf("%f", &larg1);
        res = alt1 * larg1;
        printf("\n Resultado: %.2f Mt2", res);
        printf("\n\n PAREDE 2");
        printf("\n Altura: ");
        scanf("%f", &alt1);
        printf("\n Largura: ");
        scanf("%f", &larg1);
        res2 = alt1 * larg1;
        printf("\n Resultado: %.2f Mt2", res2);
        printf("\n\n PAREDE 3");
        printf("\n Altura: ");
        scanf("%f", &alt1);
        printf("\n Largura: ");
        scanf("%f", &larg1);
        res3 = alt1 * larg1;
        printf("\n Resultado: %.2f Mt2", res3);
        printf("\n\n PAREDE 4");
        printf("\n Altura: ");
        scanf("%f", &alt1);
        printf("\n Largura: ");
        scanf("%f", &larg1);
        res4 = alt1 * larg1;
        printf("\n RESULTADO: %.2f Mt2", res4);
        printf("\n\n TOTAL: %.2f Mt2", res + res2 + res3 + res4);
        break;
      default:
        printf("\n Numero invalido!");
      };
      break;
    default:
      printf("\n\n\n Numero invalido!");
    }
    i--;
    getch();
    system("cls");
  }
  getch();
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x5c(%rbp)
cmpl   $0x3,-0x5c(%rbp)
jge    18cb <main+0x78b>
lea    0xebe(%rip),%rdi
xor    %eax,%eax
mov    %al,-0x69(%rbp)
call   1040 <printf@plt>
mov    -0x69(%rbp),%al
lea    0xebf(%rip),%rdi
call   1040 <printf@plt>
mov    -0x69(%rbp),%al
lea    0xec9(%rip),%rdi
call   1040 <printf@plt>
mov    -0x69(%rbp),%al
lea    0xeda(%rip),%rdi
call   1040 <printf@plt>
mov    -0x69(%rbp),%al
lea    0xefc(%rip),%rdi
call   1040 <printf@plt>
mov    -0x69(%rbp),%al
lea    0xef6(%rip),%rdi
call   1040 <printf@plt>
mov    -0x69(%rbp),%al
lea    0xefe(%rip),%rdi
lea    -0x54(%rbp),%rsi
call   1050 <scanf@plt>
mov    -0x54(%rbp),%eax
mov    %rax,-0x68(%rbp)
sub    $0x4,%rax
ja     1893 <main+0x753>
mov    -0x68(%rbp),%rax
lea    0xe16(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x0,-0x4(%rbp)
jmp    18d2 <main+0x792>
lea    0xec0(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xeba(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xeb8(%rip),%rdi
lea    -0x10(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xea9(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xe98(%rip),%rdi
lea    -0x20(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movss  -0x10(%rbp),%xmm0
mulss  -0x20(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xee5(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
jmp    18a1 <main+0x761>
lea    0xe78(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xe79(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xe49(%rip),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xe3a(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xe29(%rip),%rdi
lea    -0x20(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xe44(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xe09(%rip),%rdi
lea    -0x10(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movss  0xd18(%rip),%xmm0
mulss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x10(%rbp)
movss  0xd06(%rip),%xmm0
mulss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
movss  -0x10(%rbp),%xmm0
addss  -0x20(%rbp),%xmm0
mulss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe23(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
jmp    18a1 <main+0x761>
lea    0xddc(%rip),%rdi
xor    %eax,%eax
mov    %al,-0x79(%rbp)
call   1040 <printf@plt>
mov    -0x79(%rbp),%al
lea    0xd78(%rip),%rdi
lea    -0x58(%rbp),%rsi
call   1050 <scanf@plt>
mov    -0x58(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x78(%rbp)
sub    $0x3,%eax
ja     1880 <main+0x740>
mov    -0x78(%rbp),%rax
lea    0xca0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xdb4(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd6a(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd3a(%rip),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xd55(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xd1a(%rip),%rdi
lea    -0x10(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movss  -0x30(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xd5c(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
jmp    188e <main+0x74e>
lea    0xd5c(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xcf1(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xcc1(%rip),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xcdc(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xca1(%rip),%rdi
lea    -0x10(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movss  -0x30(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xd02(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xd0a(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xc7d(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xc4d(%rip),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xc68(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xc2d(%rip),%rdi
lea    -0x10(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movss  -0x30(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc8e(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movss  -0x40(%rbp),%xmm0
addss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc53(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
jmp    188e <main+0x74e>
lea    0xc53(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xbe8(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xbb8(%rip),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xbd3(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xb98(%rip),%rdi
lea    -0x10(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movss  -0x30(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xbf9(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xc01(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xb74(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xb44(%rip),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xb5f(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xb24(%rip),%rdi
lea    -0x10(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movss  -0x30(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xb85(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xb9a(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xb00(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xad0(%rip),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xaeb(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xab0(%rip),%rdi
lea    -0x10(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movss  -0x30(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x48(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xb11(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movss  -0x40(%rbp),%xmm0
addss  -0x44(%rbp),%xmm0
addss  -0x48(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xad1(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
jmp    188e <main+0x74e>
lea    0xb0d(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xa66(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xa36(%rip),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xa51(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xa16(%rip),%rdi
lea    -0x10(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movss  -0x30(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xa77(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xaa4(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x9f2(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x9c2(%rip),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0x9dd(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x9a2(%rip),%rdi
lea    -0x10(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movss  -0x30(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xa03(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xa3c(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x97e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x94e(%rip),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0x969(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x92e(%rip),%rdi
lea    -0x10(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movss  -0x30(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x48(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x98f(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0x9d4(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x90a(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x8da(%rip),%rdi
lea    -0x30(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0x8f5(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x8ba(%rip),%rdi
lea    -0x10(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movss  -0x30(%rbp),%xmm0
mulss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x97a(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movss  -0x40(%rbp),%xmm0
addss  -0x44(%rbp),%xmm0
addss  -0x48(%rbp),%xmm0
addss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x96a(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
jmp    188e <main+0x74e>
lea    0x96c(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    18a1 <main+0x761>
lea    0x957(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x5c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x5c(%rbp)
mov    $0x0,%al
call   1060 <getch@plt>
lea    0x94e(%rip),%rdi
call   1030 <system@plt>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    1159 <main+0x19>
mov    $0x0,%al
call   1060 <getch@plt>
mov    -0x4(%rbp),%eax
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
lea    0xf4e(%rip),%rbx
lea    0xf50(%rip),%r14
lea    0xf60(%rip),%r15
lea    0x14(%rsp),%rbp
lea    0xe91(%rip),%r12
lea    0xf64(%rip),%r13
jmp    11f9 <main+0xb9>
nopl   0x0(%rax,%rax,1)
lea    0xf3f(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf39(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x4(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
lea    0xf2b(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x18(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
movss  0x4(%rsp),%xmm0
mulss  0x18(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xf68(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
xor    %eax,%eax
call   1060 <getch@plt>
lea    0x100e(%rip),%rdi
call   1030 <system@plt>
lea    0xe24(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe2b(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe36(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe48(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15,%rdi
mov    %rbp,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
mov    0x14(%rsp),%eax
cmp    $0x4,%rax
ja     1310 <main+0x1d0>
movslq (%r12,%rax,4),%rax
add    %r12,%rax
jmp    *%rax
lea    0xe7d(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xe7e(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x8(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
lea    0xe42(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x18(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
lea    0xe4f(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x4(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
movss  0x4(%rsp),%xmm0
addss  %xmm0,%xmm0
movss  %xmm0,0x4(%rsp)
movss  0x18(%rsp),%xmm1
addss  %xmm1,%xmm1
movss  %xmm1,0x18(%rsp)
addss  %xmm0,%xmm1
mulss  0x8(%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
jmp    11d8 <main+0x98>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    0xed6(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
jmp    11e6 <main+0xa6>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    0xddc(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15,%rdi
lea    0x24(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
mov    0x24(%rsp),%eax
add    $0xffffffff,%eax
cmp    $0x3,%eax
ja     13c2 <main+0x282>
lea    0xcb4(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xdc8(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xd7e(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x8(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
lea    0xd6c(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x4(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
movss  0x8(%rsp),%xmm0
mulss  0x4(%rsp),%xmm0
jmp    1640 <main+0x500>
lea    0xe26(%rip),%rdi
jmp    1317 <main+0x1d7>
lea    0xd84(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xd19(%rip),%rbp
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x8(%rsp),%r15
mov    %r15,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
lea    0xd01(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x4(%rsp),%rbx
mov    %rbx,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
movss  0x8(%rsp),%xmm0
mulss  0x4(%rsp),%xmm0
movss  %xmm0,0x10(%rsp)
cvtss2sd %xmm0,%xmm0
lea    0xd29(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xd31(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbp,%rdi
lea    0xc51(%rip),%r14
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
mov    %r15,%rsi
lea    0xc54(%rip),%r15
lea    0x14(%rsp),%rbp
xor    %eax,%eax
call   1050 <scanf@plt>
lea    0xc85(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
mov    %rbx,%rsi
lea    0xc0d(%rip),%rbx
xor    %eax,%eax
call   1050 <scanf@plt>
movss  0x8(%rsp),%xmm0
mulss  0x4(%rsp),%xmm0
movss  %xmm0,0xc(%rsp)
cvtss2sd %xmm0,%xmm0
lea    0xcab(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movss  0xc(%rsp),%xmm0
addss  0x10(%rsp),%xmm0
jmp    1640 <main+0x500>
lea    0xc80(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xc15(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x8(%rsp),%r15
mov    %r15,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
lea    0xc00(%rip),%rbp
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x4(%rsp),%rbx
mov    %rbx,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
movss  0x8(%rsp),%xmm0
mulss  0x4(%rsp),%xmm0
movss  %xmm0,0x10(%rsp)
cvtss2sd %xmm0,%xmm0
lea    0xc25(%rip),%r14
mov    %r14,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xc2a(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xb9d(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
movss  0x8(%rsp),%xmm0
mulss  0x4(%rsp),%xmm0
movss  %xmm0,0xc(%rsp)
cvtss2sd %xmm0,%xmm0
mov    %r14,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xbd7(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xb3d(%rip),%rdi
lea    0xae6(%rip),%r14
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
mov    %r15,%rsi
lea    0xae9(%rip),%r15
lea    0x14(%rsp),%rbp
xor    %eax,%eax
call   1050 <scanf@plt>
lea    0xb1a(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x4(%rsp),%rsi
lea    0xaa0(%rip),%rbx
xor    %eax,%eax
call   1050 <scanf@plt>
movss  0x8(%rsp),%xmm0
mulss  0x4(%rsp),%xmm0
movss  %xmm0,0x1c(%rsp)
cvtss2sd %xmm0,%xmm0
lea    0xb3e(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movss  0xc(%rsp),%xmm0
addss  0x10(%rsp),%xmm0
addss  0x1c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xafb(%rip),%rdi
jmp    11df <main+0x9f>
lea    0xb3e(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xa97(%rip),%rbp
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x8(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
lea    0xa82(%rip),%r14
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x4(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
movss  0x8(%rsp),%xmm0
mulss  0x4(%rsp),%xmm0
movss  %xmm0,0x10(%rsp)
cvtss2sd %xmm0,%xmm0
lea    0xaaa(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xad7(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %rbp,%rdi
mov    %rbp,%r15
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x8(%rsp),%rbx
mov    %rbx,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x4(%rsp),%rbp
mov    %rbp,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
movss  0x8(%rsp),%xmm0
mulss  0x4(%rsp),%xmm0
movss  %xmm0,0xc(%rsp)
cvtss2sd %xmm0,%xmm0
lea    0xa3d(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xa76(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
mov    %rbp,%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
movss  0x8(%rsp),%xmm0
mulss  0x4(%rsp),%xmm0
movss  %xmm0,0x1c(%rsp)
cvtss2sd %xmm0,%xmm0
lea    0x9dd(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
lea    0xa22(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15,%rdi
lea    0x905(%rip),%r14
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
mov    %rbx,%rsi
lea    0x908(%rip),%r15
lea    0x14(%rsp),%rbp
xor    %eax,%eax
call   1050 <scanf@plt>
lea    0x939(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r13,%rdi
lea    0x4(%rsp),%rsi
lea    0x8bf(%rip),%rbx
xor    %eax,%eax
call   1050 <scanf@plt>
movss  0x8(%rsp),%xmm0
mulss  0x4(%rsp),%xmm0
movss  %xmm0,0x20(%rsp)
cvtss2sd %xmm0,%xmm0
lea    0x9bc(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movss  0xc(%rsp),%xmm0
addss  0x10(%rsp),%xmm0
addss  0x1c(%rsp),%xmm0
addss  0x20(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0x9a8(%rip),%rdi
jmp    11df <main+0x9f>
xor    %eax,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [21 x i8] c"\0A\0AEscolha uma opcao:\00"
@.str.1 = [25 x i8] c"\0A\0A1- para calcular piso.\00"
@.str.2 = [32 x i8] c"\0A3- para calcular revestimento.\00"
@.str.3 = [49 x i8] c"\0A4- para calcular revestimento lados diferentes.\00"
@.str.4 = [9 x i8] c"\0A0- SAIR\00"
@.str.5 = [23 x i8] c"\0A\0A Escolha uma opcao: \00"
@.str.6 = [3 x i8] c"%d\00"
@.str.7 = [8 x i8] c"\0A PISO \00"
@.str.8 = [12 x i8] c"\0A largura: \00"
@.str.9 = [3 x i8] c"%f\00"
@.str.10 = [16 x i8] c"\0A Comprimento: \00"
@.str.11 = [18 x i8] c"\0A Total: %.2f Mt2\00"
@.str.12 = [15 x i8] c"\0A REVESTIMENTO\00"
@.str.13 = [11 x i8] c"\0A Altura: \00"
@.str.14 = [12 x i8] c"\0A Largura: \00"
@.str.15 = [37 x i8] c"\0A Quantidade de paredes (de 1 a 4): \00"
@.str.16 = [14 x i8] c"\0AREVESTIMENTO\00"
@.str.17 = [19 x i8] c"\0A\0A Total: %.2f Mt2\00"
@.str.18 = [12 x i8] c"\0A PAREDE 1:\00"
@.str.19 = [22 x i8] c"\0A Resultado: %.2f Mt2\00"
@.str.20 = [13 x i8] c"\0A\0A PAREDE 2:\00"
@.str.21 = [13 x i8] c"\0A\0A PAREDE 3:\00"
@.str.22 = [11 x i8] c"\0A PAREDE 1\00"
@.str.23 = [12 x i8] c"\0A\0A PAREDE 2\00"
@.str.24 = [12 x i8] c"\0A\0A PAREDE 3\00"
@.str.25 = [12 x i8] c"\0A\0A PAREDE 4\00"
@.str.26 = [22 x i8] c"\0A RESULTADO: %.2f Mt2\00"
@.str.27 = [19 x i8] c"\0A\0A TOTAL: %.2f Mt2\00"
@.str.28 = [19 x i8] c"\0A Numero invalido!\00"
@.str.29 = [21 x i8] c"\0A\0A\0A Numero invalido!\00"
@.str.30 = [4 x i8] c"cls\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [2 x float]
%3 = alloca float
%4 = alloca float
%5 = alloca float
%6 = alloca float
%7 = alloca float
%8 = alloca float
%9 = alloca float
%10 = alloca float
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = alloca float
%15 = alloca float
%16 = alloca float
%17 = alloca float
%18 = alloca float
%19 = alloca float
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i8
store i32 0, i32* %1
store i32 0, i32* %22
br label %24
24: ; preds = %217, %0
%25 = load i32, i32* %22
%26 = icmp slt i32 %25, 3
br i1 %26, label %27, label %220
27: ; preds = %24
%28 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str, i64 0, i64 0))
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.1, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.2, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.3, i64 0, i64 0))
%32 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0))
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.5, i64 0, i64 0))
%34 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32* %20)
%35 = load i32, i32* %20
switch i32 %35, label %210 [
i32 0, label %36
i32 1, label %37
i32 3, label %48
i32 4, label %68
]
36: ; preds = %27
store i32 0, i32* %1
br label %222
37: ; preds = %27
%38 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0))
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0))
%40 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0))
%42 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %7)
%43 = load float, float* %3
%44 = load float, float* %7
%45 = fmul float %43, %44
%46 = fpext float %45 to double
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.11, i64 0, i64 0), double %46)
br label %212
48: ; preds = %27
%49 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0))
%50 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%51 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %11)
%52 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0))
%53 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %7)
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%55 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%56 = load float, float* %3
%57 = fmul float %56, 2.000000e+00
store float %57, float* %3
%58 = load float, float* %7
%59 = fmul float %58, 2.000000e+00
store float %59, float* %7
%60 = load float, float* %3
%61 = load float, float* %7
%62 = fadd float %60, %61
%63 = load float, float* %11
%64 = fmul float %62, %63
store float %64, float* %15
%65 = load float, float* %15
%66 = fpext float %65 to double
%67 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.11, i64 0, i64 0), double %66)
br label %212
68: ; preds = %27
%69 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.15, i64 0, i64 0))
%70 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32* %21)
%71 = load i32, i32* %21
switch i32 %71, label %207 [
i32 1, label %72
i32 2, label %84
i32 3, label %112
i32 4, label %153
]
72: ; preds = %68
%73 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.16, i64 0, i64 0))
%74 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%75 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %11)
%76 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%77 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%78 = load float, float* %11
%79 = load float, float* %3
%80 = fmul float %78, %79
store float %80, float* %15
%81 = load float, float* %15
%82 = fpext float %81 to double
%83 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.17, i64 0, i64 0), double %82)
br label %209
84: ; preds = %68
%85 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.18, i64 0, i64 0))
%86 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%87 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %11)
%88 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%89 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%90 = load float, float* %11
%91 = load float, float* %3
%92 = fmul float %90, %91
store float %92, float* %15
%93 = load float, float* %15
%94 = fpext float %93 to double
%95 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %94)
%96 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.20, i64 0, i64 0))
%97 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%98 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %11)
%99 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%100 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%101 = load float, float* %11
%102 = load float, float* %3
%103 = fmul float %101, %102
store float %103, float* %16
%104 = load float, float* %16
%105 = fpext float %104 to double
%106 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %105)
%107 = load float, float* %15
%108 = load float, float* %16
%109 = fadd float %107, %108
%110 = fpext float %109 to double
%111 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.17, i64 0, i64 0), double %110)
br label %209
112: ; preds = %68
%113 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.18, i64 0, i64 0))
%114 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%115 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %11)
%116 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%117 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%118 = load float, float* %11
%119 = load float, float* %3
%120 = fmul float %118, %119
store float %120, float* %15
%121 = load float, float* %15
%122 = fpext float %121 to double
%123 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %122)
%124 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.20, i64 0, i64 0))
%125 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%126 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %11)
%127 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%128 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%129 = load float, float* %11
%130 = load float, float* %3
%131 = fmul float %129, %130
store float %131, float* %16
%132 = load float, float* %16
%133 = fpext float %132 to double
%134 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %133)
%135 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.21, i64 0, i64 0))
%136 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%137 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %11)
%138 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%139 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%140 = load float, float* %11
%141 = load float, float* %3
%142 = fmul float %140, %141
store float %142, float* %17
%143 = load float, float* %17
%144 = fpext float %143 to double
%145 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %144)
%146 = load float, float* %15
%147 = load float, float* %16
%148 = fadd float %146, %147
%149 = load float, float* %17
%150 = fadd float %148, %149
%151 = fpext float %150 to double
%152 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.17, i64 0, i64 0), double %151)
br label %209
153: ; preds = %68
%154 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.22, i64 0, i64 0))
%155 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%156 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %11)
%157 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%158 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%159 = load float, float* %11
%160 = load float, float* %3
%161 = fmul float %159, %160
store float %161, float* %15
%162 = load float, float* %15
%163 = fpext float %162 to double
%164 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %163)
%165 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.23, i64 0, i64 0))
%166 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%167 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %11)
%168 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%169 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%170 = load float, float* %11
%171 = load float, float* %3
%172 = fmul float %170, %171
store float %172, float* %16
%173 = load float, float* %16
%174 = fpext float %173 to double
%175 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %174)
%176 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.24, i64 0, i64 0))
%177 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%178 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %11)
%179 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%180 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%181 = load float, float* %11
%182 = load float, float* %3
%183 = fmul float %181, %182
store float %183, float* %17
%184 = load float, float* %17
%185 = fpext float %184 to double
%186 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %185)
%187 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.25, i64 0, i64 0))
%188 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%189 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %11)
%190 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%191 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%192 = load float, float* %11
%193 = load float, float* %3
%194 = fmul float %192, %193
store float %194, float* %18
%195 = load float, float* %18
%196 = fpext float %195 to double
%197 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.26, i64 0, i64 0), double %196)
%198 = load float, float* %15
%199 = load float, float* %16
%200 = fadd float %198, %199
%201 = load float, float* %17
%202 = fadd float %200, %201
%203 = load float, float* %18
%204 = fadd float %202, %203
%205 = fpext float %204 to double
%206 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.27, i64 0, i64 0), double %205)
br label %209
207: ; preds = %68
%208 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.28, i64 0, i64 0))
br label %209
209: ; preds = %207, %153, %112, %84, %72
br label %212
210: ; preds = %27
%211 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.29, i64 0, i64 0))
br label %212
212: ; preds = %210, %209, %48, %37
%213 = load i32, i32* %22
%214 = add nsw i32 %213, -1
store i32 %214, i32* %22
%215 = call i32 (...) @getch()
%216 = call i32 @system(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.30, i64 0, i64 0))
br label %217
217: ; preds = %212
%218 = load i32, i32* %22
%219 = add nsw i32 %218, 1
store i32 %219, i32* %22
br label %24
220: ; preds = %24
%221 = call i32 (...) @getch()
br label %222
222: ; preds = %220, %36
%223 = load i32, i32* %1
ret i32 %223
}

LLVM IR (-O2):
@.str = [21 x i8] c"\0A\0AEscolha uma opcao:\00"
@.str.1 = [25 x i8] c"\0A\0A1- para calcular piso.\00"
@.str.2 = [32 x i8] c"\0A3- para calcular revestimento.\00"
@.str.3 = [49 x i8] c"\0A4- para calcular revestimento lados diferentes.\00"
@.str.4 = [9 x i8] c"\0A0- SAIR\00"
@.str.5 = [23 x i8] c"\0A\0A Escolha uma opcao: \00"
@.str.6 = [3 x i8] c"%d\00"
@.str.7 = [8 x i8] c"\0A PISO \00"
@.str.8 = [12 x i8] c"\0A largura: \00"
@.str.9 = [3 x i8] c"%f\00"
@.str.10 = [16 x i8] c"\0A Comprimento: \00"
@.str.11 = [18 x i8] c"\0A Total: %.2f Mt2\00"
@.str.12 = [15 x i8] c"\0A REVESTIMENTO\00"
@.str.13 = [11 x i8] c"\0A Altura: \00"
@.str.14 = [12 x i8] c"\0A Largura: \00"
@.str.15 = [37 x i8] c"\0A Quantidade de paredes (de 1 a 4): \00"
@.str.16 = [14 x i8] c"\0AREVESTIMENTO\00"
@.str.17 = [19 x i8] c"\0A\0A Total: %.2f Mt2\00"
@.str.18 = [12 x i8] c"\0A PAREDE 1:\00"
@.str.19 = [22 x i8] c"\0A Resultado: %.2f Mt2\00"
@.str.20 = [13 x i8] c"\0A\0A PAREDE 2:\00"
@.str.21 = [13 x i8] c"\0A\0A PAREDE 3:\00"
@.str.22 = [11 x i8] c"\0A PAREDE 1\00"
@.str.23 = [12 x i8] c"\0A\0A PAREDE 2\00"
@.str.24 = [12 x i8] c"\0A\0A PAREDE 3\00"
@.str.25 = [12 x i8] c"\0A\0A PAREDE 4\00"
@.str.26 = [22 x i8] c"\0A RESULTADO: %.2f Mt2\00"
@.str.27 = [19 x i8] c"\0A\0A TOTAL: %.2f Mt2\00"
@.str.28 = [19 x i8] c"\0A Numero invalido!\00"
@.str.29 = [21 x i8] c"\0A\0A\0A Numero invalido!\00"
@.str.30 = [4 x i8] c"cls\00"
define i32 @main() {
%1 = alloca float
%2 = alloca float
%3 = alloca float
%4 = alloca i32
%5 = alloca i32
%6 = bitcast float* %1 to i8*
%7 = bitcast float* %2 to i8*
%8 = bitcast float* %3 to i8*
%9 = bitcast i32* %4 to i8*
%10 = bitcast i32* %5 to i8*
br label %11
11: ; preds = %172, %0
%12 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @.str.1, i64 0, i64 0))
%14 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.2, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.3, i64 0, i64 0))
%16 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0))
%17 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.5, i64 0, i64 0))
%18 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32* %4)
%19 = load i32, i32* %4
switch i32 %19, label %170 [
i32 0, label %175
i32 1, label %20
i32 3, label %31
i32 4, label %48
]
20: ; preds = %11
%21 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0))
%22 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0))
%23 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %1)
%24 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0))
%25 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %2)
%26 = load float, float* %1
%27 = load float, float* %2
%28 = fmul float %26, %27
%29 = fpext float %28 to double
%30 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.11, i64 0, i64 0), double %29)
br label %172
31: ; preds = %11
%32 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.12, i64 0, i64 0))
%33 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%34 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%35 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0))
%36 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %2)
%37 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%38 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %1)
%39 = load float, float* %1
%40 = fmul float %39, 2.000000e+00
store float %40, float* %1
%41 = load float, float* %2
%42 = fmul float %41, 2.000000e+00
store float %42, float* %2
%43 = fadd float %40, %42
%44 = load float, float* %3
%45 = fmul float %43, %44
%46 = fpext float %45 to double
%47 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.11, i64 0, i64 0), double %46)
br label %172
48: ; preds = %11
%49 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.15, i64 0, i64 0))
%50 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32* %5)
%51 = load i32, i32* %5
switch i32 %51, label %168 [
i32 1, label %52
i32 2, label %63
i32 3, label %87
i32 4, label %122
]
52: ; preds = %48
%53 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.16, i64 0, i64 0))
%54 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%55 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%56 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%57 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %1)
%58 = load float, float* %3
%59 = load float, float* %1
%60 = fmul float %58, %59
%61 = fpext float %60 to double
%62 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.17, i64 0, i64 0), double %61)
br label %172
63: ; preds = %48
%64 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.18, i64 0, i64 0))
%65 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%66 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%67 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%68 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %1)
%69 = load float, float* %3
%70 = load float, float* %1
%71 = fmul float %69, %70
%72 = fpext float %71 to double
%73 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %72)
%74 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.20, i64 0, i64 0))
%75 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%76 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%77 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%78 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %1)
%79 = load float, float* %3
%80 = load float, float* %1
%81 = fmul float %79, %80
%82 = fpext float %81 to double
%83 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %82)
%84 = fadd float %71, %81
%85 = fpext float %84 to double
%86 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.17, i64 0, i64 0), double %85)
br label %172
87: ; preds = %48
%88 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.18, i64 0, i64 0))
%89 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%90 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%91 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%92 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %1)
%93 = load float, float* %3
%94 = load float, float* %1
%95 = fmul float %93, %94
%96 = fpext float %95 to double
%97 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %96)
%98 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.20, i64 0, i64 0))
%99 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%100 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%101 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%102 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %1)
%103 = load float, float* %3
%104 = load float, float* %1
%105 = fmul float %103, %104
%106 = fpext float %105 to double
%107 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %106)
%108 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.21, i64 0, i64 0))
%109 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%110 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%111 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%112 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %1)
%113 = load float, float* %3
%114 = load float, float* %1
%115 = fmul float %113, %114
%116 = fpext float %115 to double
%117 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %116)
%118 = fadd float %95, %105
%119 = fadd float %118, %115
%120 = fpext float %119 to double
%121 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.17, i64 0, i64 0), double %120)
br label %172
122: ; preds = %48
%123 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.22, i64 0, i64 0))
%124 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%125 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%126 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%127 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %1)
%128 = load float, float* %3
%129 = load float, float* %1
%130 = fmul float %128, %129
%131 = fpext float %130 to double
%132 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %131)
%133 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.23, i64 0, i64 0))
%134 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%135 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%136 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%137 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %1)
%138 = load float, float* %3
%139 = load float, float* %1
%140 = fmul float %138, %139
%141 = fpext float %140 to double
%142 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %141)
%143 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.24, i64 0, i64 0))
%144 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%145 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%146 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%147 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %1)
%148 = load float, float* %3
%149 = load float, float* %1
%150 = fmul float %148, %149
%151 = fpext float %150 to double
%152 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.19, i64 0, i64 0), double %151)
%153 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.25, i64 0, i64 0))
%154 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
%155 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %3)
%156 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%157 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), float* %1)
%158 = load float, float* %3
%159 = load float, float* %1
%160 = fmul float %158, %159
%161 = fpext float %160 to double
%162 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.26, i64 0, i64 0), double %161)
%163 = fadd float %130, %140
%164 = fadd float %163, %150
%165 = fadd float %164, %160
%166 = fpext float %165 to double
%167 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.27, i64 0, i64 0), double %166)
br label %172
168: ; preds = %48
%169 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.28, i64 0, i64 0))
br label %172
170: ; preds = %11
%171 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.29, i64 0, i64 0))
br label %172
172: ; preds = %52, %63, %87, %122, %168, %170, %31, %20
%173 = call i32 (...) @getch()
%174 = call i32 @system(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.30, i64 0, i64 0))
br label %11
175: ; preds = %11
ret i32 0
}