#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 log(double);
double pow(double, double);
int /*<<< orphan*/ printf(char *, char *);
int /*<<< orphan*/ scanf(char *, double *, double *, double *);
int main(int argc, char const *argv[]) {
  char *options[12] = {
      "x^y^z",   "x^z^y",   "(x^y)^z", "(x^z)^y", "y^x^z",   "y^z^x",
      "(y^x)^z", "(y^z)^x", "z^x^y",   "z^y^x",   "(z^x)^y", "(z^y)^x",
  };
  double a[12], max, x, y, z;
  int nmax;
  scanf("%lf%lf%lf", &x, &y, &z);
  if (x > 1 && y > 1 && z > 1) {
    a[0] = log(log(x)) + z * log(y);
    a[1] = log(log(x)) + y * log(z);
    a[2] = log(log(x)) + log(y) + log(z);
    a[3] = a[2];
    a[4] = log(log(y)) + z * log(x);
    a[5] = log(log(y)) + x * log(z);
    a[6] = log(log(y)) + log(z) + log(x);
    a[7] = a[6];
    a[8] = log(log(z)) + y * log(x);
    a[9] = log(log(z)) + x * log(y);
    a[10] = log(log(z)) + log(x) + log(y);
    a[11] = a[10];
  } else {
    if (x != 1) {
      a[0] = log(x) * pow(y, z);
      a[1] = log(x) * pow(z, y);
      a[2] = log(x) * y * z;
      a[3] = a[2];
    } else
      a[0] = a[1] = a[2] = a[3] = 0;
    if (y != 1) {
      a[4] = log(y) * pow(x, z);
      a[5] = log(y) * pow(z, x);
      a[6] = log(y) * z * x;
      a[7] = a[6];
    } else
      a[4] = a[5] = a[6] = a[7] = 0;
    if (z != 1) {
      a[8] = log(z) * pow(x, y);
      a[9] = log(z) * pow(y, x);
      a[10] = log(z) * x * y;
      a[11] = a[10];
    } else
      a[8] = a[9] = a[10] = a[11] = 0;
  }
  max = a[0];
  nmax = 0;
  for (int i = 0; i < 12; i++) {
    if (a[i] > max) {
      max = a[i];
      nmax = i;
    }
  }
  printf("%s\n", options[nmax]);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1c0,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
lea    -0x70(%rbp),%rdi
lea    0x2c4c(%rip),%rsi
mov    $0x60,%edx
call   1040 <memcpy@plt>
lea    0xed7(%rip),%rdi
lea    -0xe0(%rbp),%rsi
lea    -0xe8(%rbp),%rdx
lea    -0xf0(%rbp),%rcx
call   1050 <scanf@plt>
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xe51(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    155b <main+0x40b>
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0xe37(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    155b <main+0x40b>
movsd  -0xf0(%rbp),%xmm0
ff
movsd  0xe1d(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    155b <main+0x40b>
movsd  -0xe0(%rbp),%xmm0
ff
call   1060 <log@plt>
call   1060 <log@plt>
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
call   1060 <log@plt>
movsd  -0x188(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x180(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
call   1060 <log@plt>
call   1060 <log@plt>
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
call   1060 <log@plt>
movsd  -0x178(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x170(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
call   1060 <log@plt>
call   1060 <log@plt>
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
call   1060 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x168(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
call   1060 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x160(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
call   1060 <log@plt>
call   1060 <log@plt>
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
call   1060 <log@plt>
movsd  -0x158(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x150(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
call   1060 <log@plt>
call   1060 <log@plt>
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
call   1060 <log@plt>
movsd  -0x148(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x140(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
call   1060 <log@plt>
call   1060 <log@plt>
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
call   1060 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x138(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
call   1060 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x130(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
call   1060 <log@plt>
call   1060 <log@plt>
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
call   1060 <log@plt>
movsd  -0x128(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x120(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
call   1060 <log@plt>
call   1060 <log@plt>
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
call   1060 <log@plt>
movsd  -0x118(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x110(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
call   1060 <log@plt>
call   1060 <log@plt>
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
call   1060 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x108(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
call   1060 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x100(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    1878 <main+0x728>
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xa95(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1580 <main+0x430>
jp     1580 <main+0x430>
jmp    163c <main+0x4ec>
movsd  -0xe0(%rbp),%xmm0
ff
call   1060 <log@plt>
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm1
ff
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x198(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
call   1060 <log@plt>
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x190(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
call   1060 <log@plt>
mulsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    1668 <main+0x518>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0x988(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    168d <main+0x53d>
jp     168d <main+0x53d>
jmp    1749 <main+0x5f9>
movsd  -0xe8(%rbp),%xmm0
ff
call   1060 <log@plt>
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm1
ff
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1a8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
call   1060 <log@plt>
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm1
ff
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1a0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
call   1060 <log@plt>
mulsd  -0xf0(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
jmp    1775 <main+0x625>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  0x87b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    179a <main+0x64a>
jp     179a <main+0x64a>
jmp    184d <main+0x6fd>
movsd  -0xf0(%rbp),%xmm0
ff
call   1060 <log@plt>
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1b8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
call   1060 <log@plt>
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm1
ff
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1b0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
call   1060 <log@plt>
mulsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    1873 <main+0x723>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
jmp    1878 <main+0x728>
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movl   $0x0,-0xf4(%rbp)
movl   $0x0,-0xf8(%rbp)
cmpl   $0xc,-0xf8(%rbp)
jge    1904 <main+0x7b4>
movslq -0xf8(%rbp),%rax
movsd  -0xd0(%rbp,%rax,8),%xmm0
ff ff
ucomisd -0xd8(%rbp),%xmm0
ff
jbe    18eb <main+0x79b>
movslq -0xf8(%rbp),%rax
movsd  -0xd0(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0xf8(%rbp),%eax
mov    %eax,-0xf4(%rbp)
jmp    18f0 <main+0x7a0>
mov    -0xf8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf8(%rbp)
jmp    189c <main+0x74c>
movslq -0xf4(%rbp),%rax
mov    -0x70(%rbp,%rax,8),%rsi
lea    0x74f(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x1c0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0x68,%rsp
lea    0xf11(%rip),%rdi
lea    0x18(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0x8(%rsp),%rcx
call   1040 <scanf@plt>
movsd  0x18(%rsp),%xmm2
ucomisd 0xe93(%rip),%xmm2
movsd  0x10(%rsp),%xmm1
movsd  0x8(%rsp),%xmm0
jbe    140f <main+0x2cf>
ucomisd 0xe79(%rip),%xmm1
jbe    140f <main+0x2cf>
ucomisd 0xe6b(%rip),%xmm0
jbe    140f <main+0x2cf>
movapd %xmm2,%xmm0
call   1050 <log@plt>
call   1050 <log@plt>
movsd  %xmm0,0x38(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x10(%rsp),%xmm0
call   1050 <log@plt>
mulsd  0x28(%rsp),%xmm0
addsd  0x38(%rsp),%xmm0
movsd  %xmm0,0x38(%rsp)
movsd  0x18(%rsp),%xmm0
call   1050 <log@plt>
call   1050 <log@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <log@plt>
mulsd  0x20(%rsp),%xmm0
addsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x18(%rsp),%xmm0
call   1050 <log@plt>
call   1050 <log@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
call   1050 <log@plt>
addsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <log@plt>
addsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  0x10(%rsp),%xmm0
call   1050 <log@plt>
call   1050 <log@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x18(%rsp),%xmm0
call   1050 <log@plt>
mulsd  0x30(%rsp),%xmm0
addsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
call   1050 <log@plt>
call   1050 <log@plt>
movsd  %xmm0,0x30(%rsp)
movsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x48(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <log@plt>
mulsd  0x48(%rsp),%xmm0
addsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x10(%rsp),%xmm0
call   1050 <log@plt>
call   1050 <log@plt>
movsd  %xmm0,0x48(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <log@plt>
addsd  0x48(%rsp),%xmm0
movsd  %xmm0,0x48(%rsp)
movsd  0x18(%rsp),%xmm0
call   1050 <log@plt>
addsd  0x48(%rsp),%xmm0
movsd  %xmm0,0x48(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <log@plt>
call   1050 <log@plt>
movsd  %xmm0,0x50(%rsp)
movsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x40(%rsp)
movsd  0x18(%rsp),%xmm0
call   1050 <log@plt>
mulsd  0x40(%rsp),%xmm0
addsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <log@plt>
call   1050 <log@plt>
movsd  %xmm0,0x40(%rsp)
movsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x58(%rsp)
movsd  0x10(%rsp),%xmm0
call   1050 <log@plt>
mulsd  0x58(%rsp),%xmm0
addsd  0x40(%rsp),%xmm0
movsd  %xmm0,0x40(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <log@plt>
call   1050 <log@plt>
movsd  %xmm0,0x58(%rsp)
movsd  0x18(%rsp),%xmm0
call   1050 <log@plt>
addsd  0x58(%rsp),%xmm0
movsd  %xmm0,0x58(%rsp)
movsd  0x10(%rsp),%xmm0
call   1050 <log@plt>
movsd  0x40(%rsp),%xmm3
movsd  0x50(%rsp),%xmm1
movsd  0x30(%rsp),%xmm7
movsd  0x20(%rsp),%xmm2
movsd  0x48(%rsp),%xmm6
movsd  0x60(%rsp),%xmm5
movsd  0x28(%rsp),%xmm4
movsd  0x38(%rsp),%xmm8
addsd  0x58(%rsp),%xmm0
jmp    164f <main+0x50f>
ucomisd 0xbe9(%rip),%xmm2
xorpd  %xmm6,%xmm6
xorpd  %xmm5,%xmm5
xorpd  %xmm4,%xmm4
xorpd  %xmm8,%xmm8
jne    1430 <main+0x2f0>
jnp    14be <main+0x37e>
movapd %xmm2,%xmm0
call   1050 <log@plt>
movsd  %xmm0,0x38(%rsp)
movsd  0x10(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
call   1060 <pow@plt>
mulsd  0x38(%rsp),%xmm0
movsd  %xmm0,0x38(%rsp)
movsd  0x18(%rsp),%xmm0
call   1050 <log@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
call   1060 <pow@plt>
mulsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x18(%rsp),%xmm0
call   1050 <log@plt>
xorpd  %xmm6,%xmm6
movsd  0x28(%rsp),%xmm4
movsd  0x38(%rsp),%xmm8
movapd %xmm0,%xmm5
movsd  0x10(%rsp),%xmm1
mulsd  %xmm1,%xmm5
movsd  0x8(%rsp),%xmm0
mulsd  %xmm0,%xmm5
ucomisd 0xb3a(%rip),%xmm1
xorpd  %xmm7,%xmm7
xorpd  %xmm2,%xmm2
movsd  %xmm8,0x38(%rsp)
movsd  %xmm4,0x28(%rsp)
movsd  %xmm5,0x60(%rsp)
jne    14e9 <main+0x3a9>
jnp    1581 <main+0x441>
movapd %xmm1,%xmm0
call   1050 <log@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x18(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
call   1060 <pow@plt>
mulsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
call   1050 <log@plt>
movsd  %xmm0,0x30(%rsp)
movsd  0x8(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
call   1060 <pow@plt>
mulsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x10(%rsp),%xmm0
call   1050 <log@plt>
movsd  0x30(%rsp),%xmm7
movsd  0x20(%rsp),%xmm2
movsd  0x60(%rsp),%xmm5
movsd  0x28(%rsp),%xmm4
movsd  0x38(%rsp),%xmm8
movapd %xmm0,%xmm6
movsd  0x8(%rsp),%xmm0
mulsd  %xmm0,%xmm6
mulsd  0x18(%rsp),%xmm6
ucomisd 0xa77(%rip),%xmm0
jne    1591 <main+0x451>
jnp    1643 <main+0x503>
movsd  %xmm6,0x48(%rsp)
movsd  %xmm2,0x20(%rsp)
movsd  %xmm7,0x30(%rsp)
call   1050 <log@plt>
movsd  %xmm0,0x50(%rsp)
movsd  0x18(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
call   1060 <pow@plt>
mulsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <log@plt>
movsd  %xmm0,0x40(%rsp)
movsd  0x10(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
call   1060 <pow@plt>
mulsd  0x40(%rsp),%xmm0
movsd  %xmm0,0x40(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <log@plt>
movsd  0x40(%rsp),%xmm3
movsd  0x50(%rsp),%xmm1
movsd  0x30(%rsp),%xmm7
movsd  0x20(%rsp),%xmm2
movsd  0x48(%rsp),%xmm6
movsd  0x60(%rsp),%xmm5
movsd  0x28(%rsp),%xmm4
movsd  0x38(%rsp),%xmm8
mulsd  0x18(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm0
jmp    164f <main+0x50f>
xorpd  %xmm0,%xmm0
xorpd  %xmm3,%xmm3
xorpd  %xmm1,%xmm1
xor    %eax,%eax
ucomisd %xmm8,%xmm4
seta   %al
maxsd  %xmm8,%xmm4
ucomisd %xmm4,%xmm5
mov    $0x2,%ecx
cmovbe %rax,%rcx
maxsd  %xmm4,%xmm5
ucomisd %xmm5,%xmm2
mov    $0x4,%eax
cmovbe %rcx,%rax
maxsd  %xmm5,%xmm2
ucomisd %xmm2,%xmm7
mov    $0x5,%ecx
cmovbe %rax,%rcx
maxsd  %xmm2,%xmm7
ucomisd %xmm7,%xmm6
mov    $0x6,%eax
cmovbe %rcx,%rax
maxsd  %xmm7,%xmm6
ucomisd %xmm6,%xmm1
mov    $0x8,%ecx
cmovbe %rax,%rcx
maxsd  %xmm6,%xmm1
ucomisd %xmm1,%xmm3
mov    $0x9,%eax
cmovbe %rcx,%rax
maxsd  %xmm1,%xmm3
ucomisd %xmm3,%xmm0
mov    $0xa,%ecx
cmovbe %rax,%rcx
lea    0x994(%rip),%rax
movslq (%rax,%rcx,4),%rsi
add    %rax,%rsi
lea    0x980(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x68,%rsp
ret

LLVM IR (-O0):
@.str = [6 x i8] c"x^y^z\00"
@.str.1 = [6 x i8] c"x^z^y\00"
@.str.2 = [8 x i8] c"(x^y)^z\00"
@.str.3 = [8 x i8] c"(x^z)^y\00"
@.str.4 = [6 x i8] c"y^x^z\00"
@.str.5 = [6 x i8] c"y^z^x\00"
@.str.6 = [8 x i8] c"(y^x)^z\00"
@.str.7 = [8 x i8] c"(y^z)^x\00"
@.str.8 = [6 x i8] c"z^x^y\00"
@.str.9 = [6 x i8] c"z^y^x\00"
@.str.10 = [8 x i8] c"(z^x)^y\00"
@.str.11 = [8 x i8] c"(z^y)^x\00"
@__const.main.options = [12 x i8*] [i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.4, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.11, i32 0, i32 0)]
@.str.12 = [10 x i8] c"%lf%lf%lf\00"
@.str.13 = [4 x i8] c"%s\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca [12 x i8*]
%7 = alloca [12 x double]
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca i32
%13 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%14 = bitcast [12 x i8*]* %6 to i8*
%15 = call i32 @scanf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.12, i64 0, i64 0), double* %9, double* %10, double* %11)
%16 = load double, double* %9
%17 = fcmp ogt double %16, 1.000000e+00
br i1 %17, label %18, label %112
18: ; preds = %2
%19 = load double, double* %10
%20 = fcmp ogt double %19, 1.000000e+00
br i1 %20, label %21, label %112
21: ; preds = %18
%22 = load double, double* %11
%23 = fcmp ogt double %22, 1.000000e+00
br i1 %23, label %24, label %112
24: ; preds = %21
%25 = load double, double* %9
%26 = call double @log(double %25)
%27 = call double @log(double %26)
%28 = load double, double* %11
%29 = load double, double* %10
%30 = call double @log(double %29)
%31 = call double @llvm.fmuladd.f64(double %28, double %30, double %27)
%32 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 0
store double %31, double* %32
%33 = load double, double* %9
%34 = call double @log(double %33)
%35 = call double @log(double %34)
%36 = load double, double* %10
%37 = load double, double* %11
%38 = call double @log(double %37)
%39 = call double @llvm.fmuladd.f64(double %36, double %38, double %35)
%40 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 1
store double %39, double* %40
%41 = load double, double* %9
%42 = call double @log(double %41)
%43 = call double @log(double %42)
%44 = load double, double* %10
%45 = call double @log(double %44)
%46 = fadd double %43, %45
%47 = load double, double* %11
%48 = call double @log(double %47)
%49 = fadd double %46, %48
%50 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 2
store double %49, double* %50
%51 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 2
%52 = load double, double* %51
%53 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 3
store double %52, double* %53
%54 = load double, double* %10
%55 = call double @log(double %54)
%56 = call double @log(double %55)
%57 = load double, double* %11
%58 = load double, double* %9
%59 = call double @log(double %58)
%60 = call double @llvm.fmuladd.f64(double %57, double %59, double %56)
%61 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 4
store double %60, double* %61
%62 = load double, double* %10
%63 = call double @log(double %62)
%64 = call double @log(double %63)
%65 = load double, double* %9
%66 = load double, double* %11
%67 = call double @log(double %66)
%68 = call double @llvm.fmuladd.f64(double %65, double %67, double %64)
%69 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 5
store double %68, double* %69
%70 = load double, double* %10
%71 = call double @log(double %70)
%72 = call double @log(double %71)
%73 = load double, double* %11
%74 = call double @log(double %73)
%75 = fadd double %72, %74
%76 = load double, double* %9
%77 = call double @log(double %76)
%78 = fadd double %75, %77
%79 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 6
store double %78, double* %79
%80 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 6
%81 = load double, double* %80
%82 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 7
store double %81, double* %82
%83 = load double, double* %11
%84 = call double @log(double %83)
%85 = call double @log(double %84)
%86 = load double, double* %10
%87 = load double, double* %9
%88 = call double @log(double %87)
%89 = call double @llvm.fmuladd.f64(double %86, double %88, double %85)
%90 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 8
store double %89, double* %90
%91 = load double, double* %11
%92 = call double @log(double %91)
%93 = call double @log(double %92)
%94 = load double, double* %9
%95 = load double, double* %10
%96 = call double @log(double %95)
%97 = call double @llvm.fmuladd.f64(double %94, double %96, double %93)
%98 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 9
store double %97, double* %98
%99 = load double, double* %11
%100 = call double @log(double %99)
%101 = call double @log(double %100)
%102 = load double, double* %9
%103 = call double @log(double %102)
%104 = fadd double %101, %103
%105 = load double, double* %10
%106 = call double @log(double %105)
%107 = fadd double %104, %106
%108 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 10
store double %107, double* %108
%109 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 10
%110 = load double, double* %109
%111 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 11
store double %110, double* %111
br label %212
112: ; preds = %21, %18, %2
%113 = load double, double* %9
%114 = fcmp une double %113, 1.000000e+00
br i1 %114, label %115, label %140
115: ; preds = %112
%116 = load double, double* %9
%117 = call double @log(double %116)
%118 = load double, double* %10
%119 = load double, double* %11
%120 = call double @pow(double %118, double %119)
%121 = fmul double %117, %120
%122 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 0
store double %121, double* %122
%123 = load double, double* %9
%124 = call double @log(double %123)
%125 = load double, double* %11
%126 = load double, double* %10
%127 = call double @pow(double %125, double %126)
%128 = fmul double %124, %127
%129 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 1
store double %128, double* %129
%130 = load double, double* %9
%131 = call double @log(double %130)
%132 = load double, double* %10
%133 = fmul double %131, %132
%134 = load double, double* %11
%135 = fmul double %133, %134
%136 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 2
store double %135, double* %136
%137 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 2
%138 = load double, double* %137
%139 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 3
store double %138, double* %139
br label %145
140: ; preds = %112
%141 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 3
store double 0.000000e+00, double* %141
%142 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 2
store double 0.000000e+00, double* %142
%143 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 1
store double 0.000000e+00, double* %143
%144 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 0
store double 0.000000e+00, double* %144
br label %145
145: ; preds = %140, %115
%146 = load double, double* %10
%147 = fcmp une double %146, 1.000000e+00
br i1 %147, label %148, label %173
148: ; preds = %145
%149 = load double, double* %10
%150 = call double @log(double %149)
%151 = load double, double* %9
%152 = load double, double* %11
%153 = call double @pow(double %151, double %152)
%154 = fmul double %150, %153
%155 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 4
store double %154, double* %155
%156 = load double, double* %10
%157 = call double @log(double %156)
%158 = load double, double* %11
%159 = load double, double* %9
%160 = call double @pow(double %158, double %159)
%161 = fmul double %157, %160
%162 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 5
store double %161, double* %162
%163 = load double, double* %10
%164 = call double @log(double %163)
%165 = load double, double* %11
%166 = fmul double %164, %165
%167 = load double, double* %9
%168 = fmul double %166, %167
%169 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 6
store double %168, double* %169
%170 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 6
%171 = load double, double* %170
%172 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 7
store double %171, double* %172
br label %178
173: ; preds = %145
%174 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 7
store double 0.000000e+00, double* %174
%175 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 6
store double 0.000000e+00, double* %175
%176 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 5
store double 0.000000e+00, double* %176
%177 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 4
store double 0.000000e+00, double* %177
br label %178
178: ; preds = %173, %148
%179 = load double, double* %11
%180 = fcmp une double %179, 1.000000e+00
br i1 %180, label %181, label %206
181: ; preds = %178
%182 = load double, double* %11
%183 = call double @log(double %182)
%184 = load double, double* %9
%185 = load double, double* %10
%186 = call double @pow(double %184, double %185)
%187 = fmul double %183, %186
%188 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 8
store double %187, double* %188
%189 = load double, double* %11
%190 = call double @log(double %189)
%191 = load double, double* %10
%192 = load double, double* %9
%193 = call double @pow(double %191, double %192)
%194 = fmul double %190, %193
%195 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 9
store double %194, double* %195
%196 = load double, double* %11
%197 = call double @log(double %196)
%198 = load double, double* %9
%199 = fmul double %197, %198
%200 = load double, double* %10
%201 = fmul double %199, %200
%202 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 10
store double %201, double* %202
%203 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 10
%204 = load double, double* %203
%205 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 11
store double %204, double* %205
br label %211
206: ; preds = %178
%207 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 11
store double 0.000000e+00, double* %207
%208 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 10
store double 0.000000e+00, double* %208
%209 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 9
store double 0.000000e+00, double* %209
%210 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 8
store double 0.000000e+00, double* %210
br label %211
211: ; preds = %206, %181
br label %212
212: ; preds = %211, %24
%213 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 0
%214 = load double, double* %213
store double %214, double* %8
store i32 0, i32* %12
store i32 0, i32* %13
br label %215
215: ; preds = %232, %212
%216 = load i32, i32* %13
%217 = icmp slt i32 %216, 12
br i1 %217, label %218, label %235
218: ; preds = %215
%219 = load i32, i32* %13
%220 = sext i32 %219 to i64
%221 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 %220
%222 = load double, double* %221
%223 = load double, double* %8
%224 = fcmp ogt double %222, %223
br i1 %224, label %225, label %231
225: ; preds = %218
%226 = load i32, i32* %13
%227 = sext i32 %226 to i64
%228 = getelementptr inbounds [12 x double], [12 x double]* %7, i64 0, i64 %227
%229 = load double, double* %228
store double %229, double* %8
%230 = load i32, i32* %13
store i32 %230, i32* %12
br label %231
231: ; preds = %225, %218
br label %232
232: ; preds = %231
%233 = load i32, i32* %13
%234 = add nsw i32 %233, 1
store i32 %234, i32* %13
br label %215
235: ; preds = %215
%236 = load i32, i32* %12
%237 = sext i32 %236 to i64
%238 = getelementptr inbounds [12 x i8*], [12 x i8*]* %6, i64 0, i64 %237
%239 = load i8*, i8** %238
%240 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0), i8* %239)
ret i32 0
}

LLVM IR (-O2):
@.str = [6 x i8] c"x^y^z\00"
@.str.1 = [6 x i8] c"x^z^y\00"
@.str.2 = [8 x i8] c"(x^y)^z\00"
@.str.3 = [8 x i8] c"(x^z)^y\00"
@.str.4 = [6 x i8] c"y^x^z\00"
@.str.5 = [6 x i8] c"y^z^x\00"
@.str.6 = [8 x i8] c"(y^x)^z\00"
@.str.7 = [8 x i8] c"(y^z)^x\00"
@.str.8 = [6 x i8] c"z^x^y\00"
@.str.9 = [6 x i8] c"z^y^x\00"
@.str.10 = [8 x i8] c"(z^x)^y\00"
@.str.11 = [8 x i8] c"(z^y)^x\00"
@reltable.main = [12 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str to i64), i64 ptrtoint ([12 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.1 to i64), i64 ptrtoint ([12 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.2 to i64), i64 ptrtoint ([12 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.3 to i64), i64 ptrtoint ([12 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.4 to i64), i64 ptrtoint ([12 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.5 to i64), i64 ptrtoint ([12 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.6 to i64), i64 ptrtoint ([12 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.7 to i64), i64 ptrtoint ([12 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.8 to i64), i64 ptrtoint ([12 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.9 to i64), i64 ptrtoint ([12 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.10 to i64), i64 ptrtoint ([12 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.11 to i64), i64 ptrtoint ([12 x i32]* @reltable.main to i64)) to i32)]
@.str.12 = [10 x i8] c"%lf%lf%lf\00"
@.str.13 = [4 x i8] c"%s\0A\00"
define i32 @main(i32 %0, i8** nocapture readnone %1) {
%3 = alloca double
%4 = alloca double
%5 = alloca double
%6 = bitcast double* %3 to i8*
%7 = bitcast double* %4 to i8*
%8 = bitcast double* %5 to i8*
%9 = call i32 @scanf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.12, i64 0, i64 0), double* %3, double* %4, double* %5)
%10 = load double, double* %3
%11 = fcmp ogt double %10, 1.000000e+00
%12 = load double, double* %4
%13 = fcmp ogt double %12, 1.000000e+00
%14 = select i1 %11, i1 %13, i1 false
%15 = load double, double* %5
%16 = fcmp ogt double %15, 1.000000e+00
%17 = select i1 %14, i1 %16, i1 false
br i1 %17, label %18, label %87
18: ; preds = %2
%19 = call double @log(double %10)
%20 = call double @log(double %19)
%21 = load double, double* %5
%22 = load double, double* %4
%23 = call double @log(double %22)
%24 = call double @llvm.fmuladd.f64(double %21, double %23, double %20)
%25 = load double, double* %3
%26 = call double @log(double %25)
%27 = call double @log(double %26)
%28 = load double, double* %4
%29 = load double, double* %5
%30 = call double @log(double %29)
%31 = call double @llvm.fmuladd.f64(double %28, double %30, double %27)
%32 = load double, double* %3
%33 = call double @log(double %32)
%34 = call double @log(double %33)
%35 = load double, double* %4
%36 = call double @log(double %35)
%37 = fadd double %34, %36
%38 = load double, double* %5
%39 = call double @log(double %38)
%40 = fadd double %37, %39
%41 = load double, double* %4
%42 = call double @log(double %41)
%43 = call double @log(double %42)
%44 = load double, double* %5
%45 = load double, double* %3
%46 = call double @log(double %45)
%47 = call double @llvm.fmuladd.f64(double %44, double %46, double %43)
%48 = load double, double* %4
%49 = call double @log(double %48)
%50 = call double @log(double %49)
%51 = load double, double* %3
%52 = load double, double* %5
%53 = call double @log(double %52)
%54 = call double @llvm.fmuladd.f64(double %51, double %53, double %50)
%55 = load double, double* %4
%56 = call double @log(double %55)
%57 = call double @log(double %56)
%58 = load double, double* %5
%59 = call double @log(double %58)
%60 = fadd double %57, %59
%61 = load double, double* %3
%62 = call double @log(double %61)
%63 = fadd double %60, %62
%64 = load double, double* %5
%65 = call double @log(double %64)
%66 = call double @log(double %65)
%67 = load double, double* %4
%68 = load double, double* %3
%69 = call double @log(double %68)
%70 = call double @llvm.fmuladd.f64(double %67, double %69, double %66)
%71 = load double, double* %5
%72 = call double @log(double %71)
%73 = call double @log(double %72)
%74 = load double, double* %3
%75 = load double, double* %4
%76 = call double @log(double %75)
%77 = call double @llvm.fmuladd.f64(double %74, double %76, double %73)
%78 = load double, double* %5
%79 = call double @log(double %78)
%80 = call double @log(double %79)
%81 = load double, double* %3
%82 = call double @log(double %81)
%83 = fadd double %80, %82
%84 = load double, double* %4
%85 = call double @log(double %84)
%86 = fadd double %83, %85
br label %156
87: ; preds = %2
%88 = fcmp une double %10, 1.000000e+00
br i1 %88, label %89, label %107
89: ; preds = %87
%90 = call double @log(double %10)
%91 = load double, double* %4
%92 = load double, double* %5
%93 = call double @pow(double %91, double %92)
%94 = fmul double %90, %93
%95 = load double, double* %3
%96 = call double @log(double %95)
%97 = load double, double* %5
%98 = load double, double* %4
%99 = call double @pow(double %97, double %98)
%100 = fmul double %96, %99
%101 = load double, double* %3
%102 = call double @log(double %101)
%103 = load double, double* %4
%104 = fmul double %102, %103
%105 = load double, double* %5
%106 = fmul double %104, %105
br label %107
107: ; preds = %87, %89
%108 = phi double [ %105, %89 ], [ %15, %87 ]
%109 = phi double [ %103, %89 ], [ %12, %87 ]
%110 = phi double [ %106, %89 ], [ 0.000000e+00, %87 ]
%111 = phi double [ %100, %89 ], [ 0.000000e+00, %87 ]
%112 = phi double [ %94, %89 ], [ 0.000000e+00, %87 ]
%113 = fcmp une double %109, 1.000000e+00
br i1 %113, label %114, label %132
114: ; preds = %107
%115 = call double @log(double %109)
%116 = load double, double* %3
%117 = load double, double* %5
%118 = call double @pow(double %116, double %117)
%119 = fmul double %115, %118
%120 = load double, double* %4
%121 = call double @log(double %120)
%122 = load double, double* %5
%123 = load double, double* %3
%124 = call double @pow(double %122, double %123)
%125 = fmul double %121, %124
%126 = load double, double* %4
%127 = call double @log(double %126)
%128 = load double, double* %5
%129 = fmul double %127, %128
%130 = load double, double* %3
%131 = fmul double %129, %130
br label %132
132: ; preds = %107, %114
%133 = phi double [ %128, %114 ], [ %108, %107 ]
%134 = phi double [ %131, %114 ], [ 0.000000e+00, %107 ]
%135 = phi double [ %125, %114 ], [ 0.000000e+00, %107 ]
%136 = phi double [ %119, %114 ], [ 0.000000e+00, %107 ]
%137 = fcmp une double %133, 1.000000e+00
br i1 %137, label %138, label %156
138: ; preds = %132
%139 = call double @log(double %133)
%140 = load double, double* %3
%141 = load double, double* %4
%142 = call double @pow(double %140, double %141)
%143 = fmul double %139, %142
%144 = load double, double* %5
%145 = call double @log(double %144)
%146 = load double, double* %4
%147 = load double, double* %3
%148 = call double @pow(double %146, double %147)
%149 = fmul double %145, %148
%150 = load double, double* %5
%151 = call double @log(double %150)
%152 = load double, double* %3
%153 = fmul double %151, %152
%154 = load double, double* %4
%155 = fmul double %153, %154
br label %156
156: ; preds = %132, %138, %18
%157 = phi double [ %86, %18 ], [ %155, %138 ], [ 0.000000e+00, %132 ]
%158 = phi double [ %77, %18 ], [ %149, %138 ], [ 0.000000e+00, %132 ]
%159 = phi double [ %70, %18 ], [ %143, %138 ], [ 0.000000e+00, %132 ]
%160 = phi double [ %63, %18 ], [ %134, %138 ], [ %134, %132 ]
%161 = phi double [ %54, %18 ], [ %135, %138 ], [ %135, %132 ]
%162 = phi double [ %47, %18 ], [ %136, %138 ], [ %136, %132 ]
%163 = phi double [ %40, %18 ], [ %110, %138 ], [ %110, %132 ]
%164 = phi double [ %31, %18 ], [ %111, %138 ], [ %111, %132 ]
%165 = phi double [ %24, %18 ], [ %112, %138 ], [ %112, %132 ]
%166 = fcmp ogt double %164, %165
%167 = select i1 %166, double %164, double %165
%168 = fcmp ogt double %163, %167
%169 = select i1 %168, double %163, double %167
%170 = fcmp ogt double %162, %169
%171 = select i1 %170, double %162, double %169
%172 = fcmp ogt double %161, %171
%173 = select i1 %172, double %161, double %171
%174 = fcmp ogt double %160, %173
%175 = select i1 %174, double %160, double %173
%176 = fcmp ogt double %159, %175
%177 = select i1 %176, double %159, double %175
%178 = fcmp ogt double %158, %177
%179 = select i1 %178, double %158, double %177
%180 = fcmp ogt double %157, %179
%181 = zext i1 %166 to i64
%182 = select i1 %168, i64 2, i64 %181
%183 = select i1 %170, i64 4, i64 %182
%184 = select i1 %172, i64 5, i64 %183
%185 = select i1 %174, i64 6, i64 %184
%186 = select i1 %176, i64 8, i64 %185
%187 = select i1 %178, i64 9, i64 %186
%188 = select i1 %180, i64 10, i64 %187
%189 = shl i64 %188, 2
%190 = call i8* @llvm.load.relative.i64(i8* bitcast ([12 x i32]* @reltable.main to i8*), i64 %189)
%191 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0), i8* %190)
ret i32 0
}