#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 Arccoseno(double);
double ArcoTangente2(double, double);
double Arcseno(double);
double Arctangente(double);
double Ceil(double);
double Coseno(double);
double CosenoHiperbolico(double);
double Division(double, double);
double Exponencial(double);
double Floor(double);
double Fmod(double, double, double);
double Frexp(double, double);
double Idexp(double, double);
int /*<<< orphan*/ LC_ALL;
double LogB10(double);
double Logaritmo(double);
double Modf(double, double, double);
double Multiplicacion(double, double);
long Potencia(double, double);
double Raiz_cuadrada(double);
double Resta(double, double);
double Seno(double);
double SenoHiperbolico(double);
double Suma(double, double);
double Tangente(double);
double TangenteHiperbolico(double);
double ValorAbsoluto(double);
int /*<<< orphan*/ bind_textdomain_codeset(char *, char *);
int /*<<< orphan*/ bindtextdomain(char *, char *);
char *gettext(char *);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, char *);
int /*<<< orphan*/ setlocale(int /*<<< orphan*/, char *);
int /*<<< orphan*/ textdomain(char *);
int validar_es_entero(char *, int *);
int main() {
  bind_textdomain_codeset("calculadora", "UTF-8");
  setlocale(LC_ALL, "");
  bindtextdomain("calculadora", "idioma");
  textdomain("calculadora");
  double a, b, resultado;
  long resexp;
  int Opcion;
  char buffer[9];
  while (1) {
    printf(gettext("\n\t\tCALCULATOR\n\n"));
    printf(gettext("\t 1.- Sum\n"));
    printf(gettext("\t 2.- Subtraction\n"));
    printf(gettext("\t 3.- Multiplication\n"));
    printf(gettext("\t 4.- Division\n"));
    printf(gettext("\t 5.- Square Root\n"));
    printf(gettext("\t 6.- Pow\n"));
    printf(gettext("\t 7.- Natural Logarithm\n"));
    printf(gettext("\t 8.- Sine\n"));
    printf(gettext("\t 9.- Cosine\n"));
    printf(gettext("\t 10.-Tangent\n"));
    printf(gettext("\t 11.-arc sine\n"));
    printf(gettext("\t 12.-Arc Cosine\n"));
    printf(gettext("\t 13.-Arc Tangent\n"));
    printf(gettext("\t 14.-Ceil\n"));
    printf(gettext("\t 15.-Arc Tangent (two parameters\n"));
    printf(gettext("\t 16.-Hyperbolic Cosine\n"));
    printf(gettext("\t 17.-Hyperbolic Sine\n"));
    printf(gettext("\t 18.-Hyperbolic Tangent\n"));
    printf(gettext("\t 19.-Exponential\n"));
    printf(gettext("\t 20.-Frexp\n"));
    printf(gettext("\t 21.-Idexp\n"));
    printf(gettext("\t 22.-Logarithm base ten\n"));
    printf(gettext("\t 23.-Modf\n"));
    printf(gettext("\t 24.-Absolute value\n"));
    printf(gettext("\t 25.-Floor\n"));
    printf(gettext("\t 26.-Fmod\n"));
    printf(gettext("\t\t Choose your option: "));
    scanf("%s", buffer);
    if (validar_es_entero(buffer, &Opcion) != true)
      Opcion = 999;
    resultado = 0.0;
    switch (Opcion) {
    case 1:
      resultado = Suma(a, b);
      break;
    case 2:
      resultado = Resta(a, b);
      break;
    case 3:
      resultado = Multiplicacion(a, b);
      break;
    case 4:
      resultado = Division(a, b);
      break;
    case 5:
      resultado = Raiz_cuadrada(a);
      break;
    case 6:
      resexp = Potencia(a, b);
      printf(gettext("\n The result of the chosen option: "));
      printf(" %ld ", resexp);
      break;
    case 7:
      resultado = Logaritmo(a);
      break;
    case 8:
      resultado = Seno(a);
      break;
    case 9:
      resultado = Coseno(a);
      break;
    case 10:
      resultado = Tangente(a);
      break;
    case 11:
      resultado = Arcseno(a);
      break;
    case 12:
      resultado = Arccoseno(a);
      break;
    case 13:
      resultado = Arctangente(a);
      break;
    case 14:
      resultado = Ceil(a);
      break;
    case 15:
      resultado = ArcoTangente2(a, b);
      break;
    case 16:
      resultado = CosenoHiperbolico(a);
      break;
    case 17:
      resultado = SenoHiperbolico(a);
      break;
    case 18:
      resultado = TangenteHiperbolico(a);
      break;
    case 19:
      resultado = Exponencial(a);
      break;
    case 20:
      resultado = Frexp(a, b);
      break;
    case 21:
      resultado = Idexp(a, b);
      break;
    case 22:
      resultado = LogB10(a);
      break;
    case 23:
      resultado = Modf(a, b, resultado);
      break;
    case 24:
      resultado = ValorAbsoluto(a);
      break;
    case 25:
      resultado = Fmod(a, b, resultado);
      break;
    case 26:
      resultado = Floor(a);
      break;
    default:
      Opcion = 999;
      printf(gettext("Invalid option , try again only digits."));
    }
    if (Opcion < 999)
      printf(gettext("\n The result of the chosen option: "));
    printf("%lf \n", resultado);
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xd32(%rip),%rdi
lea    0xd37(%rip),%rsi
call   1180 <bind_textdomain_codeset@plt>
mov    0x2c97(%rip),%rax
mov    (%rax),%edi
lea    0xd3e(%rip),%rsi
call   11a0 <setlocale@plt>
lea    0xd0a(%rip),%rdi
lea    0xd15(%rip),%rsi
call   1080 <bindtextdomain@plt>
lea    0xcf7(%rip),%rdi
call   1070 <textdomain@plt>
lea    0xd04(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcfe(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcf3(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcf0(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcf0(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcea(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xce7(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcdc(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcdf(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcd5(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xccd(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcc6(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcc0(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcbc(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcb9(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcaf(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcbc(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcbf(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcc0(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcc4(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcc1(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcb8(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcaf(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xcb3(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xca9(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xca9(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xca0(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    0xc96(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
lea    -0x35(%rbp),%rsi
lea    0xc94(%rip),%rdi
call   11b0 <scanf@plt>
lea    -0x35(%rbp),%rdi
lea    -0x2c(%rbp),%rsi
call   1200 <validar_es_entero@plt>
cmp    $0x1,%eax
je     160b <main+0x2eb>
movl   $0x3e7,-0x2c(%rbp)
movq   $0x0,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x40(%rbp)
sub    $0x19,%eax
ja     18a7 <main+0x587>
mov    -0x40(%rbp),%rax
lea    0x9cd(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
call   1050 <Suma@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
call   10f0 <Resta@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
call   1130 <Multiplicacion@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
call   1090 <Division@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   1210 <Raiz_cuadrada@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
call   1110 <Potencia@plt>
mov    %rax,-0x28(%rbp)
lea    0xbb2(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
mov    -0x28(%rbp),%rsi
lea    0xbbc(%rip),%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   1230 <Logaritmo@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   1040 <Seno@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   1120 <Coseno@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   1150 <Tangente@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   10e0 <Arcseno@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   10b0 <Arccoseno@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   1170 <Arctangente@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   1220 <Ceil@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
call   1030 <ArcoTangente2@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   1140 <CosenoHiperbolico@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   1190 <SenoHiperbolico@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   1100 <TangenteHiperbolico@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   11c0 <Exponencial@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
call   1240 <Frexp@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
call   11e0 <Idexp@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   11f0 <LogB10@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
call   1160 <Modf@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   10a0 <ValorAbsoluto@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
call   1060 <Fmod@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movsd  -0x10(%rbp),%xmm0
call   11d0 <Floor@plt>
movsd  %xmm0,-0x20(%rbp)
jmp    18c4 <main+0x5a4>
movl   $0x3e7,-0x2c(%rbp)
lea    0x9f5(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
cmpl   $0x3e7,-0x2c(%rbp)
jge    18e7 <main+0x5c7>
lea    0x9a8(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
mov    $0x0,%al
call   10d0 <printf@plt>
movsd  -0x20(%rbp),%xmm0
lea    0x9df(%rip),%rdi
mov    $0x1,%al
call   10d0 <printf@plt>
jmp    1376 <main+0x56>

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
lea    0xd33(%rip),%rbx
lea    0xd38(%rip),%rsi
mov    %rbx,%rdi
call   1180 <bind_textdomain_codeset@plt>
mov    0x2c95(%rip),%rax
mov    (%rax),%edi
lea    0xd3c(%rip),%rsi
call   11a0 <setlocale@plt>
lea    0xd1a(%rip),%rsi
mov    %rbx,%rdi
call   1080 <bindtextdomain@plt>
mov    %rbx,%rdi
call   1070 <textdomain@plt>
lea    0xd0a(%rip),%rbx
lea    0xd13(%rip),%rbp
lea    0xd17(%rip),%r12
lea    0xd23(%rip),%r14
lea    0xd32(%rip),%r15
lea    0x1f(%rsp),%r13
jmp    13ae <main+0x8e>
nopw   0x0(%rax,%rax,1)
lea    0xf2b(%rip),%rdi
mov    $0x1,%al
call   10d0 <printf@plt>
mov    %rbx,%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
mov    %rbp,%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
mov    %r12,%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
mov    %r14,%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
mov    %r15,%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xcc6(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xcc3(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xcb8(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xcbb(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xcb1(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xca9(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xca2(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc9c(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc98(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc95(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc8b(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc98(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc9b(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc9c(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xca0(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc9d(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc94(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc8b(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc8f(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc85(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc85(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc7c(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc72(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xc74(%rip),%rdi
mov    %r13,%rsi
call   11b0 <scanf@plt>
mov    %r13,%rdi
lea    0xc(%rsp),%rsi
call   1200 <validar_es_entero@plt>
cmp    $0x1,%eax
jne    1650 <main+0x330>
mov    0xc(%rsp),%eax
add    $0xffffffff,%eax
cmp    $0x19,%eax
ja     1650 <main+0x330>
lea    0x9ca(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
call   1050 <Suma@plt>
jmp    1671 <main+0x351>
cs nopw 0x0(%rax,%rax,1)
movl   $0x3e7,0xc(%rsp)
lea    0xc4b(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
xorps  %xmm0,%xmm0
cmpl   $0x3e6,0xc(%rsp)
jg     13a0 <main+0x80>
lea    0xbfa(%rip),%rdi
movsd  %xmm0,0x10(%rsp)
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
movsd  0x10(%rsp),%xmm0
jmp    13a0 <main+0x80>
call   10f0 <Resta@plt>
jmp    1671 <main+0x351>
call   1130 <Multiplicacion@plt>
jmp    1671 <main+0x351>
call   1090 <Division@plt>
jmp    1671 <main+0x351>
call   1210 <Raiz_cuadrada@plt>
jmp    1671 <main+0x351>
call   1110 <Potencia@plt>
mov    %r14,%r15
mov    %r12,%r14
mov    %rax,%r12
lea    0xba9(%rip),%rdi
call   10c0 <gettext@plt>
mov    %rax,%rdi
xor    %eax,%eax
call   10d0 <printf@plt>
lea    0xbb7(%rip),%rdi
mov    %r12,%rsi
mov    %r14,%r12
mov    %r15,%r14
lea    0x9c8(%rip),%r15
xor    %eax,%eax
call   10d0 <printf@plt>
jmp    166e <main+0x34e>
call   1230 <Logaritmo@plt>
jmp    1671 <main+0x351>
call   1040 <Seno@plt>
jmp    1671 <main+0x351>
call   1120 <Coseno@plt>
jmp    1671 <main+0x351>
call   1150 <Tangente@plt>
jmp    1671 <main+0x351>
call   10e0 <Arcseno@plt>
jmp    1671 <main+0x351>
call   10b0 <Arccoseno@plt>
jmp    1671 <main+0x351>
call   1170 <Arctangente@plt>
jmp    1671 <main+0x351>
call   1220 <Ceil@plt>
jmp    1671 <main+0x351>
call   1030 <ArcoTangente2@plt>
jmp    1671 <main+0x351>
call   1140 <CosenoHiperbolico@plt>
jmp    1671 <main+0x351>
call   1190 <SenoHiperbolico@plt>
jmp    1671 <main+0x351>
call   1100 <TangenteHiperbolico@plt>
jmp    1671 <main+0x351>
call   11c0 <Exponencial@plt>
jmp    1671 <main+0x351>
call   1240 <Frexp@plt>
jmp    1671 <main+0x351>
call   11e0 <Idexp@plt>
jmp    1671 <main+0x351>
call   11f0 <LogB10@plt>
jmp    1671 <main+0x351>
xorps  %xmm2,%xmm2
call   1160 <Modf@plt>
jmp    1671 <main+0x351>
call   10a0 <ValorAbsoluto@plt>
jmp    1671 <main+0x351>
xorps  %xmm2,%xmm2
call   1060 <Fmod@plt>
jmp    1671 <main+0x351>
call   11d0 <Floor@plt>
jmp    1671 <main+0x351>

LLVM IR (-O0):
@.str = [12 x i8] c"calculadora\00"
@.str.1 = [6 x i8] c"UTF-8\00"
@LC_ALL = global i32 0
@.str.2 = [1 x i8] zeroinitializer
@.str.3 = [7 x i8] c"idioma\00"
@.str.4 = [16 x i8] c"\0A\09\09CALCULATOR\0A\0A\00"
@.str.5 = [11 x i8] c"\09 1.- Sum\0A\00"
@.str.6 = [19 x i8] c"\09 2.- Subtraction\0A\00"
@.str.7 = [22 x i8] c"\09 3.- Multiplication\0A\00"
@.str.8 = [16 x i8] c"\09 4.- Division\0A\00"
@.str.9 = [19 x i8] c"\09 5.- Square Root\0A\00"
@.str.10 = [11 x i8] c"\09 6.- Pow\0A\00"
@.str.11 = [25 x i8] c"\09 7.- Natural Logarithm\0A\00"
@.str.12 = [12 x i8] c"\09 8.- Sine\0A\00"
@.str.13 = [14 x i8] c"\09 9.- Cosine\0A\00"
@.str.14 = [15 x i8] c"\09 10.-Tangent\0A\00"
@.str.15 = [16 x i8] c"\09 11.-arc sine\0A\00"
@.str.16 = [18 x i8] c"\09 12.-Arc Cosine\0A\00"
@.str.17 = [19 x i8] c"\09 13.-Arc Tangent\0A\00"
@.str.18 = [12 x i8] c"\09 14.-Ceil\0A\00"
@.str.19 = [35 x i8] c"\09 15.-Arc Tangent (two parameters\0A\00"
@.str.20 = [25 x i8] c"\09 16.-Hyperbolic Cosine\0A\00"
@.str.21 = [23 x i8] c"\09 17.-Hyperbolic Sine\0A\00"
@.str.22 = [26 x i8] c"\09 18.-Hyperbolic Tangent\0A\00"
@.str.23 = [19 x i8] c"\09 19.-Exponential\0A\00"
@.str.24 = [13 x i8] c"\09 20.-Frexp\0A\00"
@.str.25 = [13 x i8] c"\09 21.-Idexp\0A\00"
@.str.26 = [26 x i8] c"\09 22.-Logarithm base ten\0A\00"
@.str.27 = [12 x i8] c"\09 23.-Modf\0A\00"
@.str.28 = [22 x i8] c"\09 24.-Absolute value\0A\00"
@.str.29 = [13 x i8] c"\09 25.-Floor\0A\00"
@.str.30 = [12 x i8] c"\09 26.-Fmod\0A\00"
@.str.31 = [24 x i8] c"\09\09 Choose your option: \00"
@.str.32 = [3 x i8] c"%s\00"
@.str.33 = [36 x i8] c"\0A The result of the chosen option: \00"
@.str.34 = [6 x i8] c" %ld \00"
@.str.35 = [40 x i8] c"Invalid option , try again only digits.\00"
@.str.36 = [6 x i8] c"%lf \0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca double
%3 = alloca double
%4 = alloca double
%5 = alloca i64
%6 = alloca i32
%7 = alloca [9 x i8]
store i32 0, i32* %1
%8 = call i32 @bind_textdomain_codeset(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0))
%9 = load i32, i32* @LC_ALL
%10 = call i32 @setlocale(i32 %9, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.2, i64 0, i64 0))
%11 = call i32 @bindtextdomain(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0))
%12 = call i32 @textdomain(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
br label %13
13: ; preds = %0, %181
%14 = call i8* @gettext(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* %14)
%16 = call i8* @gettext(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.5, i64 0, i64 0))
%17 = call i32 (i8*, ...) @printf(i8* %16)
%18 = call i8* @gettext(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.6, i64 0, i64 0))
%19 = call i32 (i8*, ...) @printf(i8* %18)
%20 = call i8* @gettext(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0))
%21 = call i32 (i8*, ...) @printf(i8* %20)
%22 = call i8* @gettext(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.8, i64 0, i64 0))
%23 = call i32 (i8*, ...) @printf(i8* %22)
%24 = call i8* @gettext(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.9, i64 0, i64 0))
%25 = call i32 (i8*, ...) @printf(i8* %24)
%26 = call i8* @gettext(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.10, i64 0, i64 0))
%27 = call i32 (i8*, ...) @printf(i8* %26)
%28 = call i8* @gettext(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.11, i64 0, i64 0))
%29 = call i32 (i8*, ...) @printf(i8* %28)
%30 = call i8* @gettext(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.12, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* %30)
%32 = call i8* @gettext(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.13, i64 0, i64 0))
%33 = call i32 (i8*, ...) @printf(i8* %32)
%34 = call i8* @gettext(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.14, i64 0, i64 0))
%35 = call i32 (i8*, ...) @printf(i8* %34)
%36 = call i8* @gettext(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.15, i64 0, i64 0))
%37 = call i32 (i8*, ...) @printf(i8* %36)
%38 = call i8* @gettext(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.16, i64 0, i64 0))
%39 = call i32 (i8*, ...) @printf(i8* %38)
%40 = call i8* @gettext(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.17, i64 0, i64 0))
%41 = call i32 (i8*, ...) @printf(i8* %40)
%42 = call i8* @gettext(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.18, i64 0, i64 0))
%43 = call i32 (i8*, ...) @printf(i8* %42)
%44 = call i8* @gettext(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.19, i64 0, i64 0))
%45 = call i32 (i8*, ...) @printf(i8* %44)
%46 = call i8* @gettext(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.20, i64 0, i64 0))
%47 = call i32 (i8*, ...) @printf(i8* %46)
%48 = call i8* @gettext(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.21, i64 0, i64 0))
%49 = call i32 (i8*, ...) @printf(i8* %48)
%50 = call i8* @gettext(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.22, i64 0, i64 0))
%51 = call i32 (i8*, ...) @printf(i8* %50)
%52 = call i8* @gettext(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.23, i64 0, i64 0))
%53 = call i32 (i8*, ...) @printf(i8* %52)
%54 = call i8* @gettext(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.24, i64 0, i64 0))
%55 = call i32 (i8*, ...) @printf(i8* %54)
%56 = call i8* @gettext(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.25, i64 0, i64 0))
%57 = call i32 (i8*, ...) @printf(i8* %56)
%58 = call i8* @gettext(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.26, i64 0, i64 0))
%59 = call i32 (i8*, ...) @printf(i8* %58)
%60 = call i8* @gettext(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.27, i64 0, i64 0))
%61 = call i32 (i8*, ...) @printf(i8* %60)
%62 = call i8* @gettext(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.28, i64 0, i64 0))
%63 = call i32 (i8*, ...) @printf(i8* %62)
%64 = call i8* @gettext(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.29, i64 0, i64 0))
%65 = call i32 (i8*, ...) @printf(i8* %64)
%66 = call i8* @gettext(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.30, i64 0, i64 0))
%67 = call i32 (i8*, ...) @printf(i8* %66)
%68 = call i8* @gettext(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.31, i64 0, i64 0))
%69 = call i32 (i8*, ...) @printf(i8* %68)
%70 = getelementptr inbounds [9 x i8], [9 x i8]* %7, i64 0, i64 0
%71 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.32, i64 0, i64 0), i8* %70)
%72 = getelementptr inbounds [9 x i8], [9 x i8]* %7, i64 0, i64 0
%73 = call i32 @validar_es_entero(i8* %72, i32* %6)
%74 = icmp ne i32 %73, 1
br i1 %74, label %75, label %76
75: ; preds = %13
store i32 999, i32* %6
br label %76
76: ; preds = %75, %13
store double 0.000000e+00, double* %4
%77 = load i32, i32* %6
switch i32 %77, label %172 [
i32 1, label %78
i32 2, label %82
i32 3, label %86
i32 4, label %90
i32 5, label %94
i32 6, label %97
i32 7, label %105
i32 8, label %108
i32 9, label %111
i32 10, label %114
i32 11, label %117
i32 12, label %120
i32 13, label %123
i32 14, label %126
i32 15, label %129
i32 16, label %133
i32 17, label %136
i32 18, label %139
i32 19, label %142
i32 20, label %145
i32 21, label %149
i32 22, label %153
i32 23, label %156
i32 24, label %161
i32 25, label %164
i32 26, label %169
]
78: ; preds = %76
%79 = load double, double* %2
%80 = load double, double* %3
%81 = call double @Suma(double %79, double %80)
store double %81, double* %4
br label %175
82: ; preds = %76
%83 = load double, double* %2
%84 = load double, double* %3
%85 = call double @Resta(double %83, double %84)
store double %85, double* %4
br label %175
86: ; preds = %76
%87 = load double, double* %2
%88 = load double, double* %3
%89 = call double @Multiplicacion(double %87, double %88)
store double %89, double* %4
br label %175
90: ; preds = %76
%91 = load double, double* %2
%92 = load double, double* %3
%93 = call double @Division(double %91, double %92)
store double %93, double* %4
br label %175
94: ; preds = %76
%95 = load double, double* %2
%96 = call double @Raiz_cuadrada(double %95)
store double %96, double* %4
br label %175
97: ; preds = %76
%98 = load double, double* %2
%99 = load double, double* %3
%100 = call i64 @Potencia(double %98, double %99)
store i64 %100, i64* %5
%101 = call i8* @gettext(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.33, i64 0, i64 0))
%102 = call i32 (i8*, ...) @printf(i8* %101)
%103 = load i64, i64* %5
%104 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.34, i64 0, i64 0), i64 %103)
br label %175
105: ; preds = %76
%106 = load double, double* %2
%107 = call double @Logaritmo(double %106)
store double %107, double* %4
br label %175
108: ; preds = %76
%109 = load double, double* %2
%110 = call double @Seno(double %109)
store double %110, double* %4
br label %175
111: ; preds = %76
%112 = load double, double* %2
%113 = call double @Coseno(double %112)
store double %113, double* %4
br label %175
114: ; preds = %76
%115 = load double, double* %2
%116 = call double @Tangente(double %115)
store double %116, double* %4
br label %175
117: ; preds = %76
%118 = load double, double* %2
%119 = call double @Arcseno(double %118)
store double %119, double* %4
br label %175
120: ; preds = %76
%121 = load double, double* %2
%122 = call double @Arccoseno(double %121)
store double %122, double* %4
br label %175
123: ; preds = %76
%124 = load double, double* %2
%125 = call double @Arctangente(double %124)
store double %125, double* %4
br label %175
126: ; preds = %76
%127 = load double, double* %2
%128 = call double @Ceil(double %127)
store double %128, double* %4
br label %175
129: ; preds = %76
%130 = load double, double* %2
%131 = load double, double* %3
%132 = call double @ArcoTangente2(double %130, double %131)
store double %132, double* %4
br label %175
133: ; preds = %76
%134 = load double, double* %2
%135 = call double @CosenoHiperbolico(double %134)
store double %135, double* %4
br label %175
136: ; preds = %76
%137 = load double, double* %2
%138 = call double @SenoHiperbolico(double %137)
store double %138, double* %4
br label %175
139: ; preds = %76
%140 = load double, double* %2
%141 = call double @TangenteHiperbolico(double %140)
store double %141, double* %4
br label %175
142: ; preds = %76
%143 = load double, double* %2
%144 = call double @Exponencial(double %143)
store double %144, double* %4
br label %175
145: ; preds = %76
%146 = load double, double* %2
%147 = load double, double* %3
%148 = call double @Frexp(double %146, double %147)
store double %148, double* %4
br label %175
149: ; preds = %76
%150 = load double, double* %2
%151 = load double, double* %3
%152 = call double @Idexp(double %150, double %151)
store double %152, double* %4
br label %175
153: ; preds = %76
%154 = load double, double* %2
%155 = call double @LogB10(double %154)
store double %155, double* %4
br label %175
156: ; preds = %76
%157 = load double, double* %2
%158 = load double, double* %3
%159 = load double, double* %4
%160 = call double @Modf(double %157, double %158, double %159)
store double %160, double* %4
br label %175
161: ; preds = %76
%162 = load double, double* %2
%163 = call double @ValorAbsoluto(double %162)
store double %163, double* %4
br label %175
164: ; preds = %76
%165 = load double, double* %2
%166 = load double, double* %3
%167 = load double, double* %4
%168 = call double @Fmod(double %165, double %166, double %167)
store double %168, double* %4
br label %175
169: ; preds = %76
%170 = load double, double* %2
%171 = call double @Floor(double %170)
store double %171, double* %4
br label %175
172: ; preds = %76
store i32 999, i32* %6
%173 = call i8* @gettext(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.35, i64 0, i64 0))
%174 = call i32 (i8*, ...) @printf(i8* %173)
br label %175
175: ; preds = %172, %169, %164, %161, %156, %153, %149, %145, %142, %139, %136, %133, %129, %126, %123, %120, %117, %114, %111, %108, %105, %97, %94, %90, %86, %82, %78
%176 = load i32, i32* %6
%177 = icmp slt i32 %176, 999
br i1 %177, label %178, label %181
178: ; preds = %175
%179 = call i8* @gettext(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.33, i64 0, i64 0))
%180 = call i32 (i8*, ...) @printf(i8* %179)
br label %181
181: ; preds = %178, %175
%182 = load double, double* %4
%183 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.36, i64 0, i64 0), double %182)
br label %13
}

LLVM IR (-O2):
@.str = [12 x i8] c"calculadora\00"
@.str.1 = [6 x i8] c"UTF-8\00"
@LC_ALL = global i32 0
@.str.2 = [1 x i8] zeroinitializer
@.str.3 = [7 x i8] c"idioma\00"
@.str.4 = [16 x i8] c"\0A\09\09CALCULATOR\0A\0A\00"
@.str.5 = [11 x i8] c"\09 1.- Sum\0A\00"
@.str.6 = [19 x i8] c"\09 2.- Subtraction\0A\00"
@.str.7 = [22 x i8] c"\09 3.- Multiplication\0A\00"
@.str.8 = [16 x i8] c"\09 4.- Division\0A\00"
@.str.9 = [19 x i8] c"\09 5.- Square Root\0A\00"
@.str.10 = [11 x i8] c"\09 6.- Pow\0A\00"
@.str.11 = [25 x i8] c"\09 7.- Natural Logarithm\0A\00"
@.str.12 = [12 x i8] c"\09 8.- Sine\0A\00"
@.str.13 = [14 x i8] c"\09 9.- Cosine\0A\00"
@.str.14 = [15 x i8] c"\09 10.-Tangent\0A\00"
@.str.15 = [16 x i8] c"\09 11.-arc sine\0A\00"
@.str.16 = [18 x i8] c"\09 12.-Arc Cosine\0A\00"
@.str.17 = [19 x i8] c"\09 13.-Arc Tangent\0A\00"
@.str.18 = [12 x i8] c"\09 14.-Ceil\0A\00"
@.str.19 = [35 x i8] c"\09 15.-Arc Tangent (two parameters\0A\00"
@.str.20 = [25 x i8] c"\09 16.-Hyperbolic Cosine\0A\00"
@.str.21 = [23 x i8] c"\09 17.-Hyperbolic Sine\0A\00"
@.str.22 = [26 x i8] c"\09 18.-Hyperbolic Tangent\0A\00"
@.str.23 = [19 x i8] c"\09 19.-Exponential\0A\00"
@.str.24 = [13 x i8] c"\09 20.-Frexp\0A\00"
@.str.25 = [13 x i8] c"\09 21.-Idexp\0A\00"
@.str.26 = [26 x i8] c"\09 22.-Logarithm base ten\0A\00"
@.str.27 = [12 x i8] c"\09 23.-Modf\0A\00"
@.str.28 = [22 x i8] c"\09 24.-Absolute value\0A\00"
@.str.29 = [13 x i8] c"\09 25.-Floor\0A\00"
@.str.30 = [12 x i8] c"\09 26.-Fmod\0A\00"
@.str.31 = [24 x i8] c"\09\09 Choose your option: \00"
@.str.32 = [3 x i8] c"%s\00"
@.str.33 = [36 x i8] c"\0A The result of the chosen option: \00"
@.str.34 = [6 x i8] c" %ld \00"
@.str.35 = [40 x i8] c"Invalid option , try again only digits.\00"
@.str.36 = [6 x i8] c"%lf \0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [9 x i8]
%3 = tail call i32 @bind_textdomain_codeset(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0))
%4 = load i32, i32* @LC_ALL
%5 = tail call i32 @setlocale(i32 %4, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.2, i64 0, i64 0))
%6 = tail call i32 @bindtextdomain(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0))
%7 = tail call i32 @textdomain(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%8 = bitcast i32* %1 to i8*
%9 = getelementptr inbounds [9 x i8], [9 x i8]* %2, i64 0, i64 0
br label %10
10: ; preds = %137, %0
%11 = call i8* @gettext(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %11)
%13 = call i8* @gettext(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.5, i64 0, i64 0))
%14 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %13)
%15 = call i8* @gettext(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.6, i64 0, i64 0))
%16 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %15)
%17 = call i8* @gettext(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0))
%18 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %17)
%19 = call i8* @gettext(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.8, i64 0, i64 0))
%20 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %19)
%21 = call i8* @gettext(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.9, i64 0, i64 0))
%22 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %21)
%23 = call i8* @gettext(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.10, i64 0, i64 0))
%24 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %23)
%25 = call i8* @gettext(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.11, i64 0, i64 0))
%26 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %25)
%27 = call i8* @gettext(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.12, i64 0, i64 0))
%28 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %27)
%29 = call i8* @gettext(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.13, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %29)
%31 = call i8* @gettext(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.14, i64 0, i64 0))
%32 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %31)
%33 = call i8* @gettext(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.15, i64 0, i64 0))
%34 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %33)
%35 = call i8* @gettext(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.16, i64 0, i64 0))
%36 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %35)
%37 = call i8* @gettext(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.17, i64 0, i64 0))
%38 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %37)
%39 = call i8* @gettext(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.18, i64 0, i64 0))
%40 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %39)
%41 = call i8* @gettext(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.19, i64 0, i64 0))
%42 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %41)
%43 = call i8* @gettext(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.20, i64 0, i64 0))
%44 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %43)
%45 = call i8* @gettext(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.21, i64 0, i64 0))
%46 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %45)
%47 = call i8* @gettext(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.22, i64 0, i64 0))
%48 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %47)
%49 = call i8* @gettext(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.23, i64 0, i64 0))
%50 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %49)
%51 = call i8* @gettext(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.24, i64 0, i64 0))
%52 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %51)
%53 = call i8* @gettext(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.25, i64 0, i64 0))
%54 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %53)
%55 = call i8* @gettext(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.26, i64 0, i64 0))
%56 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %55)
%57 = call i8* @gettext(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.27, i64 0, i64 0))
%58 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %57)
%59 = call i8* @gettext(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.28, i64 0, i64 0))
%60 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %59)
%61 = call i8* @gettext(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.29, i64 0, i64 0))
%62 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %61)
%63 = call i8* @gettext(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.30, i64 0, i64 0))
%64 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %63)
%65 = call i8* @gettext(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.31, i64 0, i64 0))
%66 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %65)
%67 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.32, i64 0, i64 0), i8* %9)
%68 = call i32 @validar_es_entero(i8* %9, i32* %1)
%69 = icmp eq i32 %68, 1
br i1 %69, label %70, label %127
70: ; preds = %10
%71 = load i32, i32* %1
switch i32 %71, label %127 [
i32 1, label %72
i32 2, label %74
i32 3, label %76
i32 4, label %78
i32 5, label %80
i32 6, label %82
i32 7, label %87
i32 8, label %89
i32 9, label %91
i32 10, label %93
i32 11, label %95
i32 12, label %97
i32 13, label %99
i32 14, label %101
i32 15, label %103
i32 16, label %105
i32 17, label %107
i32 18, label %109
i32 19, label %111
i32 20, label %113
i32 21, label %115
i32 22, label %117
i32 23, label %119
i32 24, label %121
i32 25, label %123
i32 26, label %125
]
72: ; preds = %70
%73 = call double @Suma(double undef, double undef)
br label %130
74: ; preds = %70
%75 = call double @Resta(double undef, double undef)
br label %130
76: ; preds = %70
%77 = call double @Multiplicacion(double undef, double undef)
br label %130
78: ; preds = %70
%79 = call double @Division(double undef, double undef)
br label %130
80: ; preds = %70
%81 = call double @Raiz_cuadrada(double undef)
br label %130
82: ; preds = %70
%83 = call i64 @Potencia(double undef, double undef)
%84 = call i8* @gettext(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.33, i64 0, i64 0))
%85 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %84)
%86 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.34, i64 0, i64 0), i64 %83)
br label %130
87: ; preds = %70
%88 = call double @Logaritmo(double undef)
br label %130
89: ; preds = %70
%90 = call double @Seno(double undef)
br label %130
91: ; preds = %70
%92 = call double @Coseno(double undef)
br label %130
93: ; preds = %70
%94 = call double @Tangente(double undef)
br label %130
95: ; preds = %70
%96 = call double @Arcseno(double undef)
br label %130
97: ; preds = %70
%98 = call double @Arccoseno(double undef)
br label %130
99: ; preds = %70
%100 = call double @Arctangente(double undef)
br label %130
101: ; preds = %70
%102 = call double @Ceil(double undef)
br label %130
103: ; preds = %70
%104 = call double @ArcoTangente2(double undef, double undef)
br label %130
105: ; preds = %70
%106 = call double @CosenoHiperbolico(double undef)
br label %130
107: ; preds = %70
%108 = call double @SenoHiperbolico(double undef)
br label %130
109: ; preds = %70
%110 = call double @TangenteHiperbolico(double undef)
br label %130
111: ; preds = %70
%112 = call double @Exponencial(double undef)
br label %130
113: ; preds = %70
%114 = call double @Frexp(double undef, double undef)
br label %130
115: ; preds = %70
%116 = call double @Idexp(double undef, double undef)
br label %130
117: ; preds = %70
%118 = call double @LogB10(double undef)
br label %130
119: ; preds = %70
%120 = call double @Modf(double undef, double undef, double 0.000000e+00)
br label %130
121: ; preds = %70
%122 = call double @ValorAbsoluto(double undef)
br label %130
123: ; preds = %70
%124 = call double @Fmod(double undef, double undef, double 0.000000e+00)
br label %130
125: ; preds = %70
%126 = call double @Floor(double undef)
br label %130
127: ; preds = %10, %70
store i32 999, i32* %1
%128 = call i8* @gettext(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.35, i64 0, i64 0))
%129 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %128)
br label %130
130: ; preds = %127, %125, %123, %121, %119, %117, %115, %113, %111, %109, %107, %105, %103, %101, %99, %97, %95, %93, %91, %89, %87, %82, %80, %78, %76, %74, %72
%131 = phi double [ 0.000000e+00, %127 ], [ %126, %125 ], [ %124, %123 ], [ %122, %121 ], [ %120, %119 ], [ %118, %117 ], [ %116, %115 ], [ %114, %113 ], [ %112, %111 ], [ %110, %109 ], [ %108, %107 ], [ %106, %105 ], [ %104, %103 ], [ %102, %101 ], [ %100, %99 ], [ %98, %97 ], [ %96, %95 ], [ %94, %93 ], [ %92, %91 ], [ %90, %89 ], [ %88, %87 ], [ 0.000000e+00, %82 ], [ %81, %80 ], [ %79, %78 ], [ %77, %76 ], [ %75, %74 ], [ %73, %72 ]
%132 = load i32, i32* %1
%133 = icmp slt i32 %132, 999
br i1 %133, label %134, label %137
134: ; preds = %130
%135 = call i8* @gettext(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.33, i64 0, i64 0))
%136 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) %135)
br label %137
137: ; preds = %134, %130
%138 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.36, i64 0, i64 0), double %131)
br label %10
}