#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 */
scalar_t__ EOF;
double atof(char *);
double cos(double);
double fmod(double, double);
int /*<<< orphan*/ free(double *);
double log(double);
double log10(double);
scalar_t__ malloc(int);
double pop(double *, int *);
double pow(double, double);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ push(double *, int *, double, int *);
scalar_t__ scanf(char *, char *);
double sin(double);
double sqrt(double);
scalar_t__ strcmp(char *, char *);
double tan(double);
double top(double *, int *);
int main() {
  double *stack = (double *)malloc(sizeof(double) * 10);
  int stacksize = 10;
  int stackpos = -1;
  char input[10 + 1];
  input[10] = '\0';
  while (scanf("%s", input) != EOF) {
    double num;
    if (atof(input) != 0.0 || strcmp(input, "0.0") == 0 ||
        strcmp(input, "0") == 0) {
      num = atof(input);
      push(stack, &stackpos, num, &stacksize);
    } else {
      if (strcmp(input, "+") == 0) {
        if (stackpos < 1) {
          printf("ERR\n");
        } else {
          double firstnum = pop(stack, &stackpos);
          double rez = pop(stack, &stackpos) + firstnum;
          push(stack, &stackpos, rez, &stacksize);
        }
      } else if (strcmp(input, "-") == 0) {
        if (stackpos < 1) {
          printf("ERR\n");
        } else {
          double firstnum = pop(stack, &stackpos);
          double rez = pop(stack, &stackpos) - firstnum;
          push(stack, &stackpos, rez, &stacksize);
        }
      } else if (strcmp(input, "*") == 0) {
        if (stackpos < 1) {
          printf("ERR\n");
        } else {
          double firstnum = pop(stack, &stackpos);
          double rez = pop(stack, &stackpos) * firstnum;
          push(stack, &stackpos, rez, &stacksize);
        }
      } else if (strcmp(input, "/") == 0) {
        if (stackpos < 1) {
          printf("ERR\n");
        } else {
          double firstnum = pop(stack, &stackpos);
          double rez = pop(stack, &stackpos) / firstnum;
          push(stack, &stackpos, rez, &stacksize);
        }
      } else if (strcmp(input, "^") == 0) {
        if (stackpos < 1) {
          printf("ERR\n");
        } else {
          double firstnum = pop(stack, &stackpos);
          double rez = pow(pop(stack, &stackpos), firstnum);
          push(stack, &stackpos, rez, &stacksize);
        }
      } else if (strcmp(input, "mod") == 0) {
        if (stackpos < 1) {
          printf("ERR\n");
        } else {
          double firstnum = pop(stack, &stackpos);
          double rez = fmod(pop(stack, &stackpos), firstnum);
          push(stack, &stackpos, rez, &stacksize);
        }
      } else if (strcmp(input, "inv") == 0) {
        if (stackpos < 0) {
          printf("ERR\n");
        } else {
          double rez = pop(stack, &stackpos);
          rez = 1 / rez;
          push(stack, &stackpos, rez, &stacksize);
        }
      } else if (strcmp(input, "print") == 0) {
        printf("%lf\n", top(stack, &stackpos));
      } else if (strcmp(input, "dup") == 0) {
        double rez = top(stack, &stackpos);
        push(stack, &stackpos, rez, &stacksize);
      } else if (strcmp(input, "xchg") == 0) {
        if (stackpos < 1) {
          printf("ERR\n");
        } else {
          double rez = pop(stack, &stackpos);
          double rez2 = pop(stack, &stackpos);
          push(stack, &stackpos, rez, &stacksize);
          push(stack, &stackpos, rez2, &stacksize);
        }
      } else if (strcmp(input, "drop") == 0) {
        if (stackpos < 0) {
          printf("ERR\n");
        } else {
          pop(stack, &stackpos);
        }
      } else if (strcmp(input, "sqrt") == 0) {
        if (stackpos < 0) {
          printf("ERR\n");
        } else {
          double rez = pop(stack, &stackpos);
          rez = sqrt(rez);
          push(stack, &stackpos, rez, &stacksize);
        }
      } else if (strcmp(input, "sin") == 0) {
        if (stackpos < 0) {
          printf("ERR\n");
        } else {
          double rez = pop(stack, &stackpos);
          rez = sin(rez);
          push(stack, &stackpos, rez, &stacksize);
        }
      } else if (strcmp(input, "cos") == 0) {
        if (stackpos < 0) {
          printf("ERR\n");
        } else {
          double rez = pop(stack, &stackpos);
          rez = cos(rez);
          push(stack, &stackpos, rez, &stacksize);
        }
      } else if (strcmp(input, "tan") == 0) {
        if (stackpos < 0) {
          printf("ERR\n");
        } else {
          double rez = pop(stack, &stackpos);
          rez = tan(rez);
          push(stack, &stackpos, rez, &stacksize);
        }
      } else if (strcmp(input, "log") == 0) {
        if (stackpos < 0) {
          printf("ERR\n");
        } else {
          double rez = pop(stack, &stackpos);
          rez = log10(rez);
          push(stack, &stackpos, rez, &stacksize);
        }
      } else if (strcmp(input, "ln") == 0) {
        if (stackpos < 0) {
          printf("ERR\n");
        } else {
          double rez = pop(stack, &stackpos);
          rez = log(rez);
          push(stack, &stackpos, rez, &stacksize);
        }
      } else if (strcmp(input, "e") == 0) {
        push(stack, &stackpos, 2.7182818284590452354, &stacksize);
      } else if (strcmp(input, "pi") == 0) {
        push(stack, &stackpos, 3.14159265358979323846, &stacksize);
      } else {
        printf("ERR\n");
      }
    }
  }
  free(stack);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xe0,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x50,%edi
call   10b0 <malloc@plt>
mov    %rax,-0x10(%rbp)
movl   $0xa,-0x14(%rbp)
movl   $0xffffffff,-0x18(%rbp)
movb   $0x0,-0x19(%rbp)
lea    -0x23(%rbp),%rsi
lea    0xdcb(%rip),%rdi
call   10d0 <scanf@plt>
mov    0x2d8f(%rip),%rcx
cmp    (%rcx),%rax
je     1b99 <main+0x989>
lea    -0x23(%rbp),%rdi
call   1040 <atof@plt>
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    12b2 <main+0xa2>
jp     12b2 <main+0xa2>
lea    -0x23(%rbp),%rdi
lea    0xd92(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
je     12b2 <main+0xa2>
lea    -0x23(%rbp),%rdi
lea    0xd7a(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    12db <main+0xcb>
lea    -0x23(%rbp),%rdi
call   1040 <atof@plt>
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rdi
movsd  -0x30(%rbp),%xmm0
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b94 <main+0x984>
lea    -0x23(%rbp),%rdi
lea    0xd39(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    1356 <main+0x146>
cmpl   $0x1,-0x18(%rbp)
jge    1312 <main+0x102>
lea    0xd1b(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1351 <main+0x141>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rdi
movsd  -0x40(%rbp),%xmm0
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b8f <main+0x97f>
lea    -0x23(%rbp),%rdi
lea    0xcc5(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    13d1 <main+0x1c1>
cmpl   $0x1,-0x18(%rbp)
jge    138d <main+0x17d>
lea    0xca0(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    13cc <main+0x1bc>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
subsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rdi
movsd  -0x50(%rbp),%xmm0
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b8a <main+0x97a>
lea    -0x23(%rbp),%rdi
lea    0xc4c(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    144c <main+0x23c>
cmpl   $0x1,-0x18(%rbp)
jge    1408 <main+0x1f8>
lea    0xc25(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1447 <main+0x237>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rdi
movsd  -0x60(%rbp),%xmm0
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b85 <main+0x975>
lea    -0x23(%rbp),%rdi
lea    0xbd3(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    14c7 <main+0x2b7>
cmpl   $0x1,-0x18(%rbp)
jge    1483 <main+0x273>
lea    0xbaa(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    14c2 <main+0x2b2>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0x68(%rbp)
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
divsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x10(%rbp),%rdi
movsd  -0x70(%rbp),%xmm0
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b80 <main+0x970>
lea    -0x23(%rbp),%rdi
lea    0xb5a(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    1547 <main+0x337>
cmpl   $0x1,-0x18(%rbp)
jge    14fe <main+0x2ee>
lea    0xb2f(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1542 <main+0x332>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  -0x78(%rbp),%xmm1
call   1110 <pow@plt>
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rdi
movsd  -0x80(%rbp),%xmm0
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b7b <main+0x96b>
lea    -0x23(%rbp),%rdi
lea    0xadc(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    15d3 <main+0x3c3>
cmpl   $0x1,-0x18(%rbp)
jge    157e <main+0x36e>
lea    0xaaf(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    15ce <main+0x3be>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  -0x88(%rbp),%xmm1
ff
call   1060 <fmod@plt>
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rdi
movsd  -0x90(%rbp),%xmm0
ff
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b76 <main+0x966>
lea    -0x23(%rbp),%rdi
lea    0xa54(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    1655 <main+0x445>
cmpl   $0x0,-0x18(%rbp)
jge    160a <main+0x3fa>
lea    0xa23(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1650 <main+0x440>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0x9e9(%rip),%xmm0
divsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rdi
movsd  -0x98(%rbp),%xmm0
ff
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b71 <main+0x961>
lea    -0x23(%rbp),%rdi
lea    0x9d6(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    168f <main+0x47f>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   10a0 <top@plt>
lea    0x9b9(%rip),%rdi
mov    $0x1,%al
call   1050 <printf@plt>
jmp    1b6c <main+0x95c>
lea    -0x23(%rbp),%rdi
lea    0x9a7(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    16dc <main+0x4cc>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   10a0 <top@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x10(%rbp),%rdi
movsd  -0xa0(%rbp),%xmm0
ff
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b67 <main+0x957>
lea    -0x23(%rbp),%rdi
lea    0x95e(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    1774 <main+0x564>
cmpl   $0x1,-0x18(%rbp)
jge    1713 <main+0x503>
lea    0x91a(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    176f <main+0x55f>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x10(%rbp),%rdi
movsd  -0xa8(%rbp),%xmm0
ff
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
mov    -0x10(%rbp),%rdi
movsd  -0xb0(%rbp),%xmm0
ff
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b62 <main+0x952>
lea    -0x23(%rbp),%rdi
lea    0x8cb(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    17bd <main+0x5ad>
cmpl   $0x0,-0x18(%rbp)
jge    17ab <main+0x59b>
lea    0x882(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    17b8 <main+0x5a8>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
jmp    1b5d <main+0x94d>
lea    -0x23(%rbp),%rdi
lea    0x887(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    183c <main+0x62c>
cmpl   $0x0,-0x18(%rbp)
jge    17f4 <main+0x5e4>
lea    0x839(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1837 <main+0x627>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
call   1130 <sqrt@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x10(%rbp),%rdi
movsd  -0xb8(%rbp),%xmm0
ff
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b58 <main+0x948>
lea    -0x23(%rbp),%rdi
lea    0x80d(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    18bb <main+0x6ab>
cmpl   $0x0,-0x18(%rbp)
jge    1873 <main+0x663>
lea    0x7ba(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    18b6 <main+0x6a6>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
call   1090 <sin@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x10(%rbp),%rdi
movsd  -0xc0(%rbp),%xmm0
ff
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b53 <main+0x943>
lea    -0x23(%rbp),%rdi
lea    0x792(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    193a <main+0x72a>
cmpl   $0x0,-0x18(%rbp)
jge    18f2 <main+0x6e2>
lea    0x73b(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1935 <main+0x725>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
call   10e0 <cos@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x10(%rbp),%rdi
movsd  -0xc8(%rbp),%xmm0
ff
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b4e <main+0x93e>
lea    -0x23(%rbp),%rdi
lea    0x717(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    19b9 <main+0x7a9>
cmpl   $0x0,-0x18(%rbp)
jge    1971 <main+0x761>
lea    0x6bc(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    19b4 <main+0x7a4>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
call   10c0 <tan@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x10(%rbp),%rdi
movsd  -0xd0(%rbp),%xmm0
ff
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b49 <main+0x939>
lea    -0x23(%rbp),%rdi
lea    0x69c(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    1a38 <main+0x828>
cmpl   $0x0,-0x18(%rbp)
jge    19f0 <main+0x7e0>
lea    0x63d(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1a33 <main+0x823>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
call   1120 <log10@plt>
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rdi
movsd  -0xd8(%rbp),%xmm0
ff
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b44 <main+0x934>
lea    -0x23(%rbp),%rdi
lea    0x621(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    1ab7 <main+0x8a7>
cmpl   $0x0,-0x18(%rbp)
jge    1a6f <main+0x85f>
lea    0x5be(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1ab2 <main+0x8a2>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
call   1070 <pop@plt>
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
call   1100 <log@plt>
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rdi
movsd  -0xe0(%rbp),%xmm0
ff
lea    -0x18(%rbp),%rsi
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b3f <main+0x92f>
lea    -0x23(%rbp),%rdi
lea    0x5a5(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    1aef <main+0x8df>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
movsd  0x527(%rip),%xmm0
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b3a <main+0x92a>
lea    -0x23(%rbp),%rdi
lea    0x56f(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    1b27 <main+0x917>
mov    -0x10(%rbp),%rdi
lea    -0x18(%rbp),%rsi
movsd  0x4e7(%rip),%xmm0
lea    -0x14(%rbp),%rdx
call   10f0 <push@plt>
jmp    1b35 <main+0x925>
lea    0x4f3(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1b3a <main+0x92a>
jmp    1b3f <main+0x92f>
jmp    1b44 <main+0x934>
jmp    1b49 <main+0x939>
jmp    1b4e <main+0x93e>
jmp    1b53 <main+0x943>
jmp    1b58 <main+0x948>
jmp    1b5d <main+0x94d>
jmp    1b62 <main+0x952>
jmp    1b67 <main+0x957>
jmp    1b6c <main+0x95c>
jmp    1b71 <main+0x961>
jmp    1b76 <main+0x966>
jmp    1b7b <main+0x96b>
jmp    1b80 <main+0x970>
jmp    1b85 <main+0x975>
jmp    1b8a <main+0x97a>
jmp    1b8f <main+0x97f>
jmp    1b94 <main+0x984>
jmp    1242 <main+0x32>
mov    -0x10(%rbp),%rdi
call   1030 <free@plt>
xor    %eax,%eax
add    $0xe0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    $0x50,%edi
call   10c0 <malloc@plt>
mov    %rax,%r14
movl   $0xa,0x10(%rsp)
movl   $0xffffffff,0x4(%rsp)
ff
movb   $0x0,0x1f(%rsp)
lea    0xdc9(%rip),%rdi
lea    0x15(%rsp),%rsi
call   10e0 <scanf@plt>
mov    0x2d80(%rip),%rbp
cmp    0x0(%rbp),%rax
jne    1287 <main+0x67>
mov    %r14,%rdi
call   1030 <free@plt>
xor    %eax,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0x15(%rsp),%rbx
lea    0x4(%rsp),%r15
lea    0x10(%rsp),%r12
lea    0xd83(%rip),%r13
nopl   (%rax)
mov    %rbx,%rdi
call   1050 <atof@plt>
ucomisd 0xd68(%rip),%xmm0
jne    12b4 <main+0x94>
jnp    12e0 <main+0xc0>
mov    %rbx,%rdi
call   1050 <atof@plt>
mov    %r14,%rdi
mov    %r15,%rsi
mov    %r12,%rdx
call   1100 <push@plt>
mov    %r13,%rdi
mov    %rbx,%rsi
call   10e0 <scanf@plt>
cmp    0x0(%rbp),%rax
jne    12a0 <main+0x80>
jmp    126e <main+0x4e>
nopl   (%rax)
mov    %rbx,%rdi
lea    0xd39(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     12b4 <main+0x94>
mov    %rbx,%rdi
lea    0xd27(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     12b4 <main+0x94>
mov    %rbx,%rdi
lea    0xd15(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     14e3 <main+0x2c3>
mov    %rbx,%rdi
lea    0xcff(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1515 <main+0x2f5>
mov    %rbx,%rdi
lea    0xce9(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1547 <main+0x327>
mov    %rbx,%rdi
lea    0xcd3(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1579 <main+0x359>
mov    %rbx,%rdi
lea    0xcbd(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     15ab <main+0x38b>
mov    %rbx,%rdi
lea    0xca7(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     15e2 <main+0x3c2>
mov    %rbx,%rdi
lea    0xc93(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1619 <main+0x3f9>
mov    %rbx,%rdi
lea    0xc7f(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     164a <main+0x42a>
mov    %rbx,%rdi
lea    0xc72(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1668 <main+0x448>
mov    %rbx,%rdi
lea    0xc5e(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1678 <main+0x458>
mov    %rbx,%rdi
lea    0xc4b(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     16ca <main+0x4aa>
mov    %rbx,%rdi
lea    0xc38(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     16e5 <main+0x4c5>
mov    %rbx,%rdi
lea    0xc25(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     170e <main+0x4ee>
mov    %rbx,%rdi
lea    0xc11(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     172e <main+0x50e>
mov    %rbx,%rdi
lea    0xbfd(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1754 <main+0x534>
mov    %rbx,%rdi
lea    0xbe9(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1770 <main+0x550>
mov    %rbx,%rdi
lea    0xbd5(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     178c <main+0x56c>
mov    %rbx,%rdi
lea    0xbc0(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     17b9 <main+0x599>
mov    %rbx,%rdi
lea    0xbaa(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
jne    17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
movsd  0xb22(%rip),%xmm0
jmp    12c2 <main+0xa2>
cmpl   $0x0,0x4(%rsp)
jle    17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
movsd  %xmm0,0x8(%rsp)
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
addsd  0x8(%rsp),%xmm0
jmp    12bc <main+0x9c>
cmpl   $0x0,0x4(%rsp)
jle    17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
movsd  %xmm0,0x8(%rsp)
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
subsd  0x8(%rsp),%xmm0
jmp    12bc <main+0x9c>
cmpl   $0x0,0x4(%rsp)
jle    17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
movsd  %xmm0,0x8(%rsp)
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
mulsd  0x8(%rsp),%xmm0
jmp    12bc <main+0x9c>
cmpl   $0x0,0x4(%rsp)
jle    17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
movsd  %xmm0,0x8(%rsp)
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
divsd  0x8(%rsp),%xmm0
jmp    12bc <main+0x9c>
cmpl   $0x0,0x4(%rsp)
jle    17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
movsd  %xmm0,0x8(%rsp)
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
movsd  0x8(%rsp),%xmm1
call   1120 <pow@plt>
jmp    12bc <main+0x9c>
cmpl   $0x0,0x4(%rsp)
jle    17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
movsd  %xmm0,0x8(%rsp)
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
movsd  0x8(%rsp),%xmm1
call   1070 <fmod@plt>
jmp    12bc <main+0x9c>
cmpl   $0x0,0x4(%rsp)
js     17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
movsd  0x9d9(%rip),%xmm1
divsd  %xmm0,%xmm1
mov    %r14,%rdi
mov    %r15,%rsi
movapd %xmm1,%xmm0
jmp    12c2 <main+0xa2>
mov    %r14,%rdi
mov    %r15,%rsi
call   10b0 <top@plt>
lea    0x9e3(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
jmp    12ca <main+0xaa>
mov    %r14,%rdi
mov    %r15,%rsi
call   10b0 <top@plt>
jmp    12bc <main+0x9c>
cmpl   $0x0,0x4(%rsp)
jle    17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
movsd  %xmm0,0x20(%rsp)
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
movsd  %xmm0,0x8(%rsp)
mov    %r14,%rdi
mov    %r15,%rsi
movsd  0x20(%rsp),%xmm0
mov    %r12,%rdx
call   1100 <push@plt>
mov    %r14,%rdi
mov    %r15,%rsi
movsd  0x8(%rsp),%xmm0
jmp    12c2 <main+0xa2>
cmpl   $0x0,0x4(%rsp)
js     17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
jmp    12ca <main+0xaa>
cmpl   $0x0,0x4(%rsp)
js     17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
ucomisd 0x915(%rip),%xmm0
jb     174a <main+0x52a>
sqrtsd %xmm0,%xmm0
jmp    12bc <main+0x9c>
cmpl   $0x0,0x4(%rsp)
js     17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
call   10a0 <sin@plt>
jmp    12bc <main+0x9c>
cmpl   $0x0,0x4(%rsp)
js     17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
call   10f0 <cos@plt>
jmp    12bc <main+0x9c>
call   1140 <sqrt@plt>
jmp    12bc <main+0x9c>
cmpl   $0x0,0x4(%rsp)
js     17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
call   10d0 <tan@plt>
jmp    12bc <main+0x9c>
cmpl   $0x0,0x4(%rsp)
js     17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
call   1130 <log10@plt>
jmp    12bc <main+0x9c>
cmpl   $0x0,0x4(%rsp)
js     17a8 <main+0x588>
mov    %r14,%rdi
mov    %r15,%rsi
call   1080 <pop@plt>
call   1110 <log@plt>
jmp    12bc <main+0x9c>
lea    0x8c0(%rip),%rdi
call   1040 <puts@plt>
jmp    12ca <main+0xaa>
mov    %r14,%rdi
mov    %r15,%rsi
movsd  0x841(%rip),%xmm0
jmp    12c2 <main+0xa2>

LLVM IR (-O0):
@.str = [3 x i8] c"%s\00"
@EOF = global i64 0
@.str.1 = [4 x i8] c"0.0\00"
@.str.2 = [2 x i8] c"0\00"
@.str.3 = [2 x i8] c"+\00"
@.str.4 = [5 x i8] c"ERR\0A\00"
@.str.5 = [2 x i8] c"-\00"
@.str.6 = [2 x i8] c"*\00"
@.str.7 = [2 x i8] c"/\00"
@.str.8 = [2 x i8] c"^\00"
@.str.9 = [4 x i8] c"mod\00"
@.str.10 = [4 x i8] c"inv\00"
@.str.11 = [6 x i8] c"print\00"
@.str.12 = [5 x i8] c"%lf\0A\00"
@.str.13 = [4 x i8] c"dup\00"
@.str.14 = [5 x i8] c"xchg\00"
@.str.15 = [5 x i8] c"drop\00"
@.str.16 = [5 x i8] c"sqrt\00"
@.str.17 = [4 x i8] c"sin\00"
@.str.18 = [4 x i8] c"cos\00"
@.str.19 = [4 x i8] c"tan\00"
@.str.20 = [4 x i8] c"log\00"
@.str.21 = [3 x i8] c"ln\00"
@.str.22 = [2 x i8] c"e\00"
@.str.23 = [3 x i8] c"pi\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca double*
%3 = alloca i32
%4 = alloca i32
%5 = alloca [11 x i8]
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
store i32 0, i32* %1
%29 = call i64 @malloc(i32 80)
%30 = inttoptr i64 %29 to double*
store double* %30, double** %2
store i32 10, i32* %3
store i32 -1, i32* %4
%31 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 10
store i8 0, i8* %31
br label %32
32: ; preds = %388, %0
%33 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%34 = call i64 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %33)
%35 = load i64, i64* @EOF
%36 = icmp ne i64 %34, %35
br i1 %36, label %37, label %389
37: ; preds = %32
%38 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%39 = call double @atof(i8* %38)
%40 = fcmp une double %39, 0.000000e+00
br i1 %40, label %49, label %41
41: ; preds = %37
%42 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%43 = call i64 @strcmp(i8* %42, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
%44 = icmp eq i64 %43, 0
br i1 %44, label %49, label %45
45: ; preds = %41
%46 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%47 = call i64 @strcmp(i8* %46, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
%48 = icmp eq i64 %47, 0
br i1 %48, label %49, label %55
49: ; preds = %45, %41, %37
%50 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%51 = call double @atof(i8* %50)
store double %51, double* %6
%52 = load double*, double** %2
%53 = load double, double* %6
%54 = call i32 @push(double* %52, i32* %4, double %53, i32* %3)
br label %388
55: ; preds = %45
%56 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%57 = call i64 @strcmp(i8* %56, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%58 = icmp eq i64 %57, 0
br i1 %58, label %59, label %75
59: ; preds = %55
%60 = load i32, i32* %4
%61 = icmp slt i32 %60, 1
br i1 %61, label %62, label %64
62: ; preds = %59
%63 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %74
64: ; preds = %59
%65 = load double*, double** %2
%66 = call double @pop(double* %65, i32* %4)
store double %66, double* %7
%67 = load double*, double** %2
%68 = call double @pop(double* %67, i32* %4)
%69 = load double, double* %7
%70 = fadd double %68, %69
store double %70, double* %8
%71 = load double*, double** %2
%72 = load double, double* %8
%73 = call i32 @push(double* %71, i32* %4, double %72, i32* %3)
br label %74
74: ; preds = %64, %62
br label %387
75: ; preds = %55
%76 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%77 = call i64 @strcmp(i8* %76, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
%78 = icmp eq i64 %77, 0
br i1 %78, label %79, label %95
79: ; preds = %75
%80 = load i32, i32* %4
%81 = icmp slt i32 %80, 1
br i1 %81, label %82, label %84
82: ; preds = %79
%83 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %94
84: ; preds = %79
%85 = load double*, double** %2
%86 = call double @pop(double* %85, i32* %4)
store double %86, double* %9
%87 = load double*, double** %2
%88 = call double @pop(double* %87, i32* %4)
%89 = load double, double* %9
%90 = fsub double %88, %89
store double %90, double* %10
%91 = load double*, double** %2
%92 = load double, double* %10
%93 = call i32 @push(double* %91, i32* %4, double %92, i32* %3)
br label %94
94: ; preds = %84, %82
br label %386
95: ; preds = %75
%96 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%97 = call i64 @strcmp(i8* %96, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
%98 = icmp eq i64 %97, 0
br i1 %98, label %99, label %115
99: ; preds = %95
%100 = load i32, i32* %4
%101 = icmp slt i32 %100, 1
br i1 %101, label %102, label %104
102: ; preds = %99
%103 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %114
104: ; preds = %99
%105 = load double*, double** %2
%106 = call double @pop(double* %105, i32* %4)
store double %106, double* %11
%107 = load double*, double** %2
%108 = call double @pop(double* %107, i32* %4)
%109 = load double, double* %11
%110 = fmul double %108, %109
store double %110, double* %12
%111 = load double*, double** %2
%112 = load double, double* %12
%113 = call i32 @push(double* %111, i32* %4, double %112, i32* %3)
br label %114
114: ; preds = %104, %102
br label %385
115: ; preds = %95
%116 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%117 = call i64 @strcmp(i8* %116, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0))
%118 = icmp eq i64 %117, 0
br i1 %118, label %119, label %135
119: ; preds = %115
%120 = load i32, i32* %4
%121 = icmp slt i32 %120, 1
br i1 %121, label %122, label %124
122: ; preds = %119
%123 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %134
124: ; preds = %119
%125 = load double*, double** %2
%126 = call double @pop(double* %125, i32* %4)
store double %126, double* %13
%127 = load double*, double** %2
%128 = call double @pop(double* %127, i32* %4)
%129 = load double, double* %13
%130 = fdiv double %128, %129
store double %130, double* %14
%131 = load double*, double** %2
%132 = load double, double* %14
%133 = call i32 @push(double* %131, i32* %4, double %132, i32* %3)
br label %134
134: ; preds = %124, %122
br label %384
135: ; preds = %115
%136 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%137 = call i64 @strcmp(i8* %136, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.8, i64 0, i64 0))
%138 = icmp eq i64 %137, 0
br i1 %138, label %139, label %155
139: ; preds = %135
%140 = load i32, i32* %4
%141 = icmp slt i32 %140, 1
br i1 %141, label %142, label %144
142: ; preds = %139
%143 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %154
144: ; preds = %139
%145 = load double*, double** %2
%146 = call double @pop(double* %145, i32* %4)
store double %146, double* %15
%147 = load double*, double** %2
%148 = call double @pop(double* %147, i32* %4)
%149 = load double, double* %15
%150 = call double @pow(double %148, double %149)
store double %150, double* %16
%151 = load double*, double** %2
%152 = load double, double* %16
%153 = call i32 @push(double* %151, i32* %4, double %152, i32* %3)
br label %154
154: ; preds = %144, %142
br label %383
155: ; preds = %135
%156 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%157 = call i64 @strcmp(i8* %156, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0))
%158 = icmp eq i64 %157, 0
br i1 %158, label %159, label %175
159: ; preds = %155
%160 = load i32, i32* %4
%161 = icmp slt i32 %160, 1
br i1 %161, label %162, label %164
162: ; preds = %159
%163 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %174
164: ; preds = %159
%165 = load double*, double** %2
%166 = call double @pop(double* %165, i32* %4)
store double %166, double* %17
%167 = load double*, double** %2
%168 = call double @pop(double* %167, i32* %4)
%169 = load double, double* %17
%170 = call double @fmod(double %168, double %169)
store double %170, double* %18
%171 = load double*, double** %2
%172 = load double, double* %18
%173 = call i32 @push(double* %171, i32* %4, double %172, i32* %3)
br label %174
174: ; preds = %164, %162
br label %382
175: ; preds = %155
%176 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%177 = call i64 @strcmp(i8* %176, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0))
%178 = icmp eq i64 %177, 0
br i1 %178, label %179, label %193
179: ; preds = %175
%180 = load i32, i32* %4
%181 = icmp slt i32 %180, 0
br i1 %181, label %182, label %184
182: ; preds = %179
%183 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %192
184: ; preds = %179
%185 = load double*, double** %2
%186 = call double @pop(double* %185, i32* %4)
store double %186, double* %19
%187 = load double, double* %19
%188 = fdiv double 1.000000e+00, %187
store double %188, double* %19
%189 = load double*, double** %2
%190 = load double, double* %19
%191 = call i32 @push(double* %189, i32* %4, double %190, i32* %3)
br label %192
192: ; preds = %184, %182
br label %381
193: ; preds = %175
%194 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%195 = call i64 @strcmp(i8* %194, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.11, i64 0, i64 0))
%196 = icmp eq i64 %195, 0
br i1 %196, label %197, label %201
197: ; preds = %193
%198 = load double*, double** %2
%199 = call double @top(double* %198, i32* %4)
%200 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0), double %199)
br label %380
201: ; preds = %193
%202 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%203 = call i64 @strcmp(i8* %202, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0))
%204 = icmp eq i64 %203, 0
br i1 %204, label %205, label %211
205: ; preds = %201
%206 = load double*, double** %2
%207 = call double @top(double* %206, i32* %4)
store double %207, double* %20
%208 = load double*, double** %2
%209 = load double, double* %20
%210 = call i32 @push(double* %208, i32* %4, double %209, i32* %3)
br label %379
211: ; preds = %201
%212 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%213 = call i64 @strcmp(i8* %212, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0))
%214 = icmp eq i64 %213, 0
br i1 %214, label %215, label %232
215: ; preds = %211
%216 = load i32, i32* %4
%217 = icmp slt i32 %216, 1
br i1 %217, label %218, label %220
218: ; preds = %215
%219 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %231
220: ; preds = %215
%221 = load double*, double** %2
%222 = call double @pop(double* %221, i32* %4)
store double %222, double* %21
%223 = load double*, double** %2
%224 = call double @pop(double* %223, i32* %4)
store double %224, double* %22
%225 = load double*, double** %2
%226 = load double, double* %21
%227 = call i32 @push(double* %225, i32* %4, double %226, i32* %3)
%228 = load double*, double** %2
%229 = load double, double* %22
%230 = call i32 @push(double* %228, i32* %4, double %229, i32* %3)
br label %231
231: ; preds = %220, %218
br label %378
232: ; preds = %211
%233 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%234 = call i64 @strcmp(i8* %233, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i64 0, i64 0))
%235 = icmp eq i64 %234, 0
br i1 %235, label %236, label %245
236: ; preds = %232
%237 = load i32, i32* %4
%238 = icmp slt i32 %237, 0
br i1 %238, label %239, label %241
239: ; preds = %236
%240 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %244
241: ; preds = %236
%242 = load double*, double** %2
%243 = call double @pop(double* %242, i32* %4)
br label %244
244: ; preds = %241, %239
br label %377
245: ; preds = %232
%246 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%247 = call i64 @strcmp(i8* %246, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.16, i64 0, i64 0))
%248 = icmp eq i64 %247, 0
br i1 %248, label %249, label %263
249: ; preds = %245
%250 = load i32, i32* %4
%251 = icmp slt i32 %250, 0
br i1 %251, label %252, label %254
252: ; preds = %249
%253 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %262
254: ; preds = %249
%255 = load double*, double** %2
%256 = call double @pop(double* %255, i32* %4)
store double %256, double* %23
%257 = load double, double* %23
%258 = call double @sqrt(double %257)
store double %258, double* %23
%259 = load double*, double** %2
%260 = load double, double* %23
%261 = call i32 @push(double* %259, i32* %4, double %260, i32* %3)
br label %262
262: ; preds = %254, %252
br label %376
263: ; preds = %245
%264 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%265 = call i64 @strcmp(i8* %264, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0))
%266 = icmp eq i64 %265, 0
br i1 %266, label %267, label %281
267: ; preds = %263
%268 = load i32, i32* %4
%269 = icmp slt i32 %268, 0
br i1 %269, label %270, label %272
270: ; preds = %267
%271 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %280
272: ; preds = %267
%273 = load double*, double** %2
%274 = call double @pop(double* %273, i32* %4)
store double %274, double* %24
%275 = load double, double* %24
%276 = call double @sin(double %275)
store double %276, double* %24
%277 = load double*, double** %2
%278 = load double, double* %24
%279 = call i32 @push(double* %277, i32* %4, double %278, i32* %3)
br label %280
280: ; preds = %272, %270
br label %375
281: ; preds = %263
%282 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%283 = call i64 @strcmp(i8* %282, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0))
%284 = icmp eq i64 %283, 0
br i1 %284, label %285, label %299
285: ; preds = %281
%286 = load i32, i32* %4
%287 = icmp slt i32 %286, 0
br i1 %287, label %288, label %290
288: ; preds = %285
%289 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %298
290: ; preds = %285
%291 = load double*, double** %2
%292 = call double @pop(double* %291, i32* %4)
store double %292, double* %25
%293 = load double, double* %25
%294 = call double @cos(double %293)
store double %294, double* %25
%295 = load double*, double** %2
%296 = load double, double* %25
%297 = call i32 @push(double* %295, i32* %4, double %296, i32* %3)
br label %298
298: ; preds = %290, %288
br label %374
299: ; preds = %281
%300 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%301 = call i64 @strcmp(i8* %300, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.19, i64 0, i64 0))
%302 = icmp eq i64 %301, 0
br i1 %302, label %303, label %317
303: ; preds = %299
%304 = load i32, i32* %4
%305 = icmp slt i32 %304, 0
br i1 %305, label %306, label %308
306: ; preds = %303
%307 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %316
308: ; preds = %303
%309 = load double*, double** %2
%310 = call double @pop(double* %309, i32* %4)
store double %310, double* %26
%311 = load double, double* %26
%312 = call double @tan(double %311)
store double %312, double* %26
%313 = load double*, double** %2
%314 = load double, double* %26
%315 = call i32 @push(double* %313, i32* %4, double %314, i32* %3)
br label %316
316: ; preds = %308, %306
br label %373
317: ; preds = %299
%318 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%319 = call i64 @strcmp(i8* %318, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0))
%320 = icmp eq i64 %319, 0
br i1 %320, label %321, label %335
321: ; preds = %317
%322 = load i32, i32* %4
%323 = icmp slt i32 %322, 0
br i1 %323, label %324, label %326
324: ; preds = %321
%325 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %334
326: ; preds = %321
%327 = load double*, double** %2
%328 = call double @pop(double* %327, i32* %4)
store double %328, double* %27
%329 = load double, double* %27
%330 = call double @log10(double %329)
store double %330, double* %27
%331 = load double*, double** %2
%332 = load double, double* %27
%333 = call i32 @push(double* %331, i32* %4, double %332, i32* %3)
br label %334
334: ; preds = %326, %324
br label %372
335: ; preds = %317
%336 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%337 = call i64 @strcmp(i8* %336, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.21, i64 0, i64 0))
%338 = icmp eq i64 %337, 0
br i1 %338, label %339, label %353
339: ; preds = %335
%340 = load i32, i32* %4
%341 = icmp slt i32 %340, 0
br i1 %341, label %342, label %344
342: ; preds = %339
%343 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %352
344: ; preds = %339
%345 = load double*, double** %2
%346 = call double @pop(double* %345, i32* %4)
store double %346, double* %28
%347 = load double, double* %28
%348 = call double @log(double %347)
store double %348, double* %28
%349 = load double*, double** %2
%350 = load double, double* %28
%351 = call i32 @push(double* %349, i32* %4, double %350, i32* %3)
br label %352
352: ; preds = %344, %342
br label %371
353: ; preds = %335
%354 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%355 = call i64 @strcmp(i8* %354, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.22, i64 0, i64 0))
%356 = icmp eq i64 %355, 0
br i1 %356, label %357, label %360
357: ; preds = %353
%358 = load double*, double** %2
%359 = call i32 @push(double* %358, i32* %4, double 0x4005BF0A8B145769, i32* %3)
br label %370
360: ; preds = %353
%361 = getelementptr inbounds [11 x i8], [11 x i8]* %5, i64 0, i64 0
%362 = call i64 @strcmp(i8* %361, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0))
%363 = icmp eq i64 %362, 0
br i1 %363, label %364, label %367
364: ; preds = %360
%365 = load double*, double** %2
%366 = call i32 @push(double* %365, i32* %4, double 0x400921FB54442D18, i32* %3)
br label %369
367: ; preds = %360
%368 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %369
369: ; preds = %367, %364
br label %370
370: ; preds = %369, %357
br label %371
371: ; preds = %370, %352
br label %372
372: ; preds = %371, %334
br label %373
373: ; preds = %372, %316
br label %374
374: ; preds = %373, %298
br label %375
375: ; preds = %374, %280
br label %376
376: ; preds = %375, %262
br label %377
377: ; preds = %376, %244
br label %378
378: ; preds = %377, %231
br label %379
379: ; preds = %378, %205
br label %380
380: ; preds = %379, %197
br label %381
381: ; preds = %380, %192
br label %382
382: ; preds = %381, %174
br label %383
383: ; preds = %382, %154
br label %384
384: ; preds = %383, %134
br label %385
385: ; preds = %384, %114
br label %386
386: ; preds = %385, %94
br label %387
387: ; preds = %386, %74
br label %388
388: ; preds = %387, %49
br label %32
389: ; preds = %32
%390 = load double*, double** %2
%391 = call i32 @free(double* %390)
ret i32 0
}

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