double oligodg(s, tm_santalucia) const char *s;
int tm_santalucia;
{
  register int dg = 0;
  register char c;
  if (tm_santalucia != 0 && tm_santalucia != 1)
    return -999999.9999;
  c = *s;
  s++;
  if (tm_santalucia != 0) {
    dg = -1960;
    if (c == 'A' || c == 'T') {
      dg += -50;
    }
    if (c == 'A')
      goto A_STATE2;
    else if (c == 'G')
      goto G_STATE2;
    else if (c == 'T')
      goto T_STATE2;
    else if (c == 'C')
      goto C_STATE2;
    else if (c == 'N')
      goto N_STATE2;
    else
      goto ERROR;
  A_STATE2:
    c = *s;
    s++;
    if ('A' == c) {
      dg += 1000;
      goto A_STATE2;
    } else if ('T' == c) {
      dg += 880;
      goto T_STATE2;
    } else if ('G' == c) {
      dg += 1280;
      goto G_STATE2;
    } else if ('C' == c) {
      dg += 1440;
      goto C_STATE2;
    } else if ('N' == c) {
      dg += 880;
      goto N_STATE2;
    } else if ('\0' == c)
      goto DONE;
    else
      goto ERROR;
  T_STATE2:
    c = *s;
    s++;
    if ('A' == c) {
      dg += 580;
      goto A_STATE2;
    } else if ('T' == c) {
      dg += 1000;
      goto T_STATE2;
    } else if ('G' == c) {
      dg += 1450;
      goto G_STATE2;
    } else if ('C' == c) {
      dg += 1300;
      goto C_STATE2;
    } else if ('N' == c) {
      dg += 580;
      goto N_STATE2;
    } else if ('\0' == c)
      goto DONE;
    else
      goto ERROR;
  G_STATE2:
    c = *s;
    s++;
    if ('A' == c) {
      dg += 1300;
      goto A_STATE2;
    } else if ('T' == c) {
      dg += 1440;
      goto T_STATE2;
    } else if ('G' == c) {
      dg += 1840;
      goto G_STATE2;
    } else if ('C' == c) {
      dg += 2240;
      goto C_STATE2;
    } else if ('N' == c) {
      dg += 1300;
      goto N_STATE2;
    } else if ('\0' == c)
      goto DONE;
    else
      goto ERROR;
  C_STATE2:
    c = *s;
    s++;
    if ('A' == c) {
      dg += 1450;
      goto A_STATE2;
    } else if ('T' == c) {
      dg += 1280;
      goto T_STATE2;
    } else if ('G' == c) {
      dg += 2170;
      goto G_STATE2;
    } else if ('C' == c) {
      dg += 1840;
      goto C_STATE2;
    } else if ('N' == c) {
      dg += 1450;
      goto N_STATE2;
    } else if ('\0' == c)
      goto DONE;
    else
      goto ERROR;
  N_STATE2:
    c = *s;
    s++;
    if ('A' == c) {
      dg += 580;
      goto A_STATE2;
    } else if ('T' == c) {
      dg += 880;
      goto T_STATE2;
    } else if ('G' == c) {
      dg += 1280;
      goto G_STATE2;
    } else if ('C' == c) {
      dg += 1300;
      goto C_STATE2;
    } else if ('N' == c) {
      dg += 580;
      goto N_STATE2;
    } else if ('\0' == c)
      goto DONE;
    else
      goto ERROR;
  } else {
    if (c == 'A')
      goto A_STATE;
    else if (c == 'G')
      goto G_STATE;
    else if (c == 'T')
      goto T_STATE;
    else if (c == 'C')
      goto C_STATE;
    else if (c == 'N')
      goto N_STATE;
    else
      goto ERROR;
  A_STATE:
    c = *s;
    s++;
    if ('A' == c) {
      dg += 1900;
      goto A_STATE;
    } else if ('T' == c) {
      dg += 1500;
      goto T_STATE;
    } else if ('G' == c) {
      dg += 1600;
      goto G_STATE;
    } else if ('C' == c) {
      dg += 1300;
      goto C_STATE;
    } else if ('N' == c) {
      dg += 1575;
      goto N_STATE;
    } else if ('\0' == c)
      goto DONE;
    else
      goto ERROR;
  T_STATE:
    c = *s;
    s++;
    if ('A' == c) {
      dg += 900;
      goto A_STATE;
    } else if ('T' == c) {
      dg += 1900;
      goto T_STATE;
    } else if ('G' == c) {
      dg += 1900;
      goto G_STATE;
    } else if ('C' == c) {
      dg += 1600;
      goto C_STATE;
    } else if ('N' == c) {
      dg += 1575;
      goto N_STATE;
    } else if ('\0' == c)
      goto DONE;
    else
      goto ERROR;
  G_STATE:
    c = *s;
    s++;
    if ('A' == c) {
      dg += 1600;
      goto A_STATE;
    } else if ('T' == c) {
      dg += 1300;
      goto T_STATE;
    } else if ('G' == c) {
      dg += 3100;
      goto G_STATE;
    } else if ('C' == c) {
      dg += 3100;
      goto C_STATE;
    } else if ('N' == c) {
      dg += 2275;
      goto N_STATE;
    } else if ('\0' == c)
      goto DONE;
    else
      goto ERROR;
  C_STATE:
    c = *s;
    s++;
    if ('A' == c) {
      dg += 1900;
      goto A_STATE;
    } else if ('T' == c) {
      dg += 1600;
      goto T_STATE;
    } else if ('G' == c) {
      dg += 3600;
      goto G_STATE;
    } else if ('C' == c) {
      dg += 3100;
      goto C_STATE;
    } else if ('N' == c) {
      dg += 2550;
      goto N_STATE;
    } else if ('\0' == c)
      goto DONE;
    else
      goto ERROR;
  N_STATE:
    c = *s;
    s++;
    if ('A' == c) {
      dg += 1575;
      goto A_STATE;
    } else if ('T' == c) {
      dg += 1575;
      goto T_STATE;
    } else if ('G' == c) {
      dg += 2550;
      goto G_STATE;
    } else if ('C' == c) {
      dg += 2275;
      goto C_STATE;
    } else if ('N' == c) {
      dg += 1994;
      goto N_STATE;
    } else if ('\0' == c)
      goto DONE;
    else
      goto ERROR;
  }
DONE:
  if (tm_santalucia != 0) {
    int sym;
    --s;
    --s;
    c = *s;
    if (c == 'A' || c == 'T') {
      dg += -50;
    }
    sym = symmetry(s);
    if (sym == 1) {
      dg += -430;
    }
  }
  return dg / 1000.0;
ERROR:
  return -999999.9999;
}


x86 assembly (clang, -O0):
<oligodg>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     114c <oligodg+0x3c>
cmpl   $0x1,-0x14(%rbp)
je     114c <oligodg+0x3c>
movsd  0xebe(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1b25 <oligodg+0xa15>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     160e <oligodg+0x4fe>
movl   $0xfffff858,-0x18(%rbp)
movsbl -0x19(%rbp),%eax
cmp    $0x41,%eax
je     118c <oligodg+0x7c>
movsbl -0x19(%rbp),%eax
cmp    $0x54,%eax
jne    1195 <oligodg+0x85>
mov    -0x18(%rbp),%eax
add    $0xffffffce,%eax
mov    %eax,-0x18(%rbp)
movsbl -0x19(%rbp),%eax
cmp    $0x41,%eax
jne    11a7 <oligodg+0x97>
jmp    11f4 <oligodg+0xe4>
movsbl -0x19(%rbp),%eax
cmp    $0x47,%eax
jne    11b9 <oligodg+0xa9>
jmp    1398 <oligodg+0x288>
movsbl -0x19(%rbp),%eax
cmp    $0x54,%eax
jne    11cb <oligodg+0xbb>
jmp    12c6 <oligodg+0x1b6>
movsbl -0x19(%rbp),%eax
cmp    $0x43,%eax
jne    11dd <oligodg+0xcd>
jmp    146a <oligodg+0x35a>
movsbl -0x19(%rbp),%eax
cmp    $0x4e,%eax
jne    11ef <oligodg+0xdf>
jmp    153c <oligodg+0x42c>
jmp    1b18 <oligodg+0xa08>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movsbl -0x19(%rbp),%ecx
mov    $0x41,%eax
cmp    %ecx,%eax
jne    122a <oligodg+0x11a>
mov    -0x18(%rbp),%eax
add    $0x3e8,%eax
mov    %eax,-0x18(%rbp)
jmp    11f4 <oligodg+0xe4>
movsbl -0x19(%rbp),%ecx
mov    $0x54,%eax
cmp    %ecx,%eax
jne    124b <oligodg+0x13b>
mov    -0x18(%rbp),%eax
add    $0x370,%eax
mov    %eax,-0x18(%rbp)
jmp    12c6 <oligodg+0x1b6>
movsbl -0x19(%rbp),%ecx
mov    $0x47,%eax
cmp    %ecx,%eax
jne    126c <oligodg+0x15c>
mov    -0x18(%rbp),%eax
add    $0x500,%eax
mov    %eax,-0x18(%rbp)
jmp    1398 <oligodg+0x288>
movsbl -0x19(%rbp),%ecx
mov    $0x43,%eax
cmp    %ecx,%eax
jne    128d <oligodg+0x17d>
mov    -0x18(%rbp),%eax
add    $0x5a0,%eax
mov    %eax,-0x18(%rbp)
jmp    146a <oligodg+0x35a>
movsbl -0x19(%rbp),%ecx
mov    $0x4e,%eax
cmp    %ecx,%eax
jne    12ae <oligodg+0x19e>
mov    -0x18(%rbp),%eax
add    $0x370,%eax
mov    %eax,-0x18(%rbp)
jmp    153c <oligodg+0x42c>
movsbl -0x19(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
jne    12c1 <oligodg+0x1b1>
jmp    1a87 <oligodg+0x977>
jmp    1b18 <oligodg+0xa08>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movsbl -0x19(%rbp),%ecx
mov    $0x41,%eax
cmp    %ecx,%eax
jne    12fc <oligodg+0x1ec>
mov    -0x18(%rbp),%eax
add    $0x244,%eax
mov    %eax,-0x18(%rbp)
jmp    11f4 <oligodg+0xe4>
movsbl -0x19(%rbp),%ecx
mov    $0x54,%eax
cmp    %ecx,%eax
jne    131d <oligodg+0x20d>
mov    -0x18(%rbp),%eax
add    $0x3e8,%eax
mov    %eax,-0x18(%rbp)
jmp    12c6 <oligodg+0x1b6>
movsbl -0x19(%rbp),%ecx
mov    $0x47,%eax
cmp    %ecx,%eax
jne    133e <oligodg+0x22e>
mov    -0x18(%rbp),%eax
add    $0x5aa,%eax
mov    %eax,-0x18(%rbp)
jmp    1398 <oligodg+0x288>
movsbl -0x19(%rbp),%ecx
mov    $0x43,%eax
cmp    %ecx,%eax
jne    135f <oligodg+0x24f>
mov    -0x18(%rbp),%eax
add    $0x514,%eax
mov    %eax,-0x18(%rbp)
jmp    146a <oligodg+0x35a>
movsbl -0x19(%rbp),%ecx
mov    $0x4e,%eax
cmp    %ecx,%eax
jne    1380 <oligodg+0x270>
mov    -0x18(%rbp),%eax
add    $0x244,%eax
mov    %eax,-0x18(%rbp)
jmp    153c <oligodg+0x42c>
movsbl -0x19(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
jne    1393 <oligodg+0x283>
jmp    1a87 <oligodg+0x977>
jmp    1b18 <oligodg+0xa08>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movsbl -0x19(%rbp),%ecx
mov    $0x41,%eax
cmp    %ecx,%eax
jne    13ce <oligodg+0x2be>
mov    -0x18(%rbp),%eax
add    $0x514,%eax
mov    %eax,-0x18(%rbp)
jmp    11f4 <oligodg+0xe4>
movsbl -0x19(%rbp),%ecx
mov    $0x54,%eax
cmp    %ecx,%eax
jne    13ef <oligodg+0x2df>
mov    -0x18(%rbp),%eax
add    $0x5a0,%eax
mov    %eax,-0x18(%rbp)
jmp    12c6 <oligodg+0x1b6>
movsbl -0x19(%rbp),%ecx
mov    $0x47,%eax
cmp    %ecx,%eax
jne    1410 <oligodg+0x300>
mov    -0x18(%rbp),%eax
add    $0x730,%eax
mov    %eax,-0x18(%rbp)
jmp    1398 <oligodg+0x288>
movsbl -0x19(%rbp),%ecx
mov    $0x43,%eax
cmp    %ecx,%eax
jne    1431 <oligodg+0x321>
mov    -0x18(%rbp),%eax
add    $0x8c0,%eax
mov    %eax,-0x18(%rbp)
jmp    146a <oligodg+0x35a>
movsbl -0x19(%rbp),%ecx
mov    $0x4e,%eax
cmp    %ecx,%eax
jne    1452 <oligodg+0x342>
mov    -0x18(%rbp),%eax
add    $0x514,%eax
mov    %eax,-0x18(%rbp)
jmp    153c <oligodg+0x42c>
movsbl -0x19(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
jne    1465 <oligodg+0x355>
jmp    1a87 <oligodg+0x977>
jmp    1b18 <oligodg+0xa08>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movsbl -0x19(%rbp),%ecx
mov    $0x41,%eax
cmp    %ecx,%eax
jne    14a0 <oligodg+0x390>
mov    -0x18(%rbp),%eax
add    $0x5aa,%eax
mov    %eax,-0x18(%rbp)
jmp    11f4 <oligodg+0xe4>
movsbl -0x19(%rbp),%ecx
mov    $0x54,%eax
cmp    %ecx,%eax
jne    14c1 <oligodg+0x3b1>
mov    -0x18(%rbp),%eax
add    $0x500,%eax
mov    %eax,-0x18(%rbp)
jmp    12c6 <oligodg+0x1b6>
movsbl -0x19(%rbp),%ecx
mov    $0x47,%eax
cmp    %ecx,%eax
jne    14e2 <oligodg+0x3d2>
mov    -0x18(%rbp),%eax
add    $0x87a,%eax
mov    %eax,-0x18(%rbp)
jmp    1398 <oligodg+0x288>
movsbl -0x19(%rbp),%ecx
mov    $0x43,%eax
cmp    %ecx,%eax
jne    1503 <oligodg+0x3f3>
mov    -0x18(%rbp),%eax
add    $0x730,%eax
mov    %eax,-0x18(%rbp)
jmp    146a <oligodg+0x35a>
movsbl -0x19(%rbp),%ecx
mov    $0x4e,%eax
cmp    %ecx,%eax
jne    1524 <oligodg+0x414>
mov    -0x18(%rbp),%eax
add    $0x5aa,%eax
mov    %eax,-0x18(%rbp)
jmp    153c <oligodg+0x42c>
movsbl -0x19(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
jne    1537 <oligodg+0x427>
jmp    1a87 <oligodg+0x977>
jmp    1b18 <oligodg+0xa08>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movsbl -0x19(%rbp),%ecx
mov    $0x41,%eax
cmp    %ecx,%eax
jne    1572 <oligodg+0x462>
mov    -0x18(%rbp),%eax
add    $0x244,%eax
mov    %eax,-0x18(%rbp)
jmp    11f4 <oligodg+0xe4>
movsbl -0x19(%rbp),%ecx
mov    $0x54,%eax
cmp    %ecx,%eax
jne    1593 <oligodg+0x483>
mov    -0x18(%rbp),%eax
add    $0x370,%eax
mov    %eax,-0x18(%rbp)
jmp    12c6 <oligodg+0x1b6>
movsbl -0x19(%rbp),%ecx
mov    $0x47,%eax
cmp    %ecx,%eax
jne    15b4 <oligodg+0x4a4>
mov    -0x18(%rbp),%eax
add    $0x500,%eax
mov    %eax,-0x18(%rbp)
jmp    1398 <oligodg+0x288>
movsbl -0x19(%rbp),%ecx
mov    $0x43,%eax
cmp    %ecx,%eax
jne    15d5 <oligodg+0x4c5>
mov    -0x18(%rbp),%eax
add    $0x514,%eax
mov    %eax,-0x18(%rbp)
jmp    146a <oligodg+0x35a>
movsbl -0x19(%rbp),%ecx
mov    $0x4e,%eax
cmp    %ecx,%eax
jne    15f6 <oligodg+0x4e6>
mov    -0x18(%rbp),%eax
add    $0x244,%eax
mov    %eax,-0x18(%rbp)
jmp    153c <oligodg+0x42c>
movsbl -0x19(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
jne    1609 <oligodg+0x4f9>
jmp    1a87 <oligodg+0x977>
jmp    1b18 <oligodg+0xa08>
movsbl -0x19(%rbp),%eax
cmp    $0x41,%eax
jne    1620 <oligodg+0x510>
jmp    166d <oligodg+0x55d>
movsbl -0x19(%rbp),%eax
cmp    $0x47,%eax
jne    1632 <oligodg+0x522>
jmp    1811 <oligodg+0x701>
movsbl -0x19(%rbp),%eax
cmp    $0x54,%eax
jne    1644 <oligodg+0x534>
jmp    173f <oligodg+0x62f>
movsbl -0x19(%rbp),%eax
cmp    $0x43,%eax
jne    1656 <oligodg+0x546>
jmp    18e3 <oligodg+0x7d3>
movsbl -0x19(%rbp),%eax
cmp    $0x4e,%eax
jne    1668 <oligodg+0x558>
jmp    19b5 <oligodg+0x8a5>
jmp    1b18 <oligodg+0xa08>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movsbl -0x19(%rbp),%ecx
mov    $0x41,%eax
cmp    %ecx,%eax
jne    16a3 <oligodg+0x593>
mov    -0x18(%rbp),%eax
add    $0x76c,%eax
mov    %eax,-0x18(%rbp)
jmp    166d <oligodg+0x55d>
movsbl -0x19(%rbp),%ecx
mov    $0x54,%eax
cmp    %ecx,%eax
jne    16c4 <oligodg+0x5b4>
mov    -0x18(%rbp),%eax
add    $0x5dc,%eax
mov    %eax,-0x18(%rbp)
jmp    173f <oligodg+0x62f>
movsbl -0x19(%rbp),%ecx
mov    $0x47,%eax
cmp    %ecx,%eax
jne    16e5 <oligodg+0x5d5>
mov    -0x18(%rbp),%eax
add    $0x640,%eax
mov    %eax,-0x18(%rbp)
jmp    1811 <oligodg+0x701>
movsbl -0x19(%rbp),%ecx
mov    $0x43,%eax
cmp    %ecx,%eax
jne    1706 <oligodg+0x5f6>
mov    -0x18(%rbp),%eax
add    $0x514,%eax
mov    %eax,-0x18(%rbp)
jmp    18e3 <oligodg+0x7d3>
movsbl -0x19(%rbp),%ecx
mov    $0x4e,%eax
cmp    %ecx,%eax
jne    1727 <oligodg+0x617>
mov    -0x18(%rbp),%eax
add    $0x627,%eax
mov    %eax,-0x18(%rbp)
jmp    19b5 <oligodg+0x8a5>
movsbl -0x19(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
jne    173a <oligodg+0x62a>
jmp    1a87 <oligodg+0x977>
jmp    1b18 <oligodg+0xa08>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movsbl -0x19(%rbp),%ecx
mov    $0x41,%eax
cmp    %ecx,%eax
jne    1775 <oligodg+0x665>
mov    -0x18(%rbp),%eax
add    $0x384,%eax
mov    %eax,-0x18(%rbp)
jmp    166d <oligodg+0x55d>
movsbl -0x19(%rbp),%ecx
mov    $0x54,%eax
cmp    %ecx,%eax
jne    1796 <oligodg+0x686>
mov    -0x18(%rbp),%eax
add    $0x76c,%eax
mov    %eax,-0x18(%rbp)
jmp    173f <oligodg+0x62f>
movsbl -0x19(%rbp),%ecx
mov    $0x47,%eax
cmp    %ecx,%eax
jne    17b7 <oligodg+0x6a7>
mov    -0x18(%rbp),%eax
add    $0x76c,%eax
mov    %eax,-0x18(%rbp)
jmp    1811 <oligodg+0x701>
movsbl -0x19(%rbp),%ecx
mov    $0x43,%eax
cmp    %ecx,%eax
jne    17d8 <oligodg+0x6c8>
mov    -0x18(%rbp),%eax
add    $0x640,%eax
mov    %eax,-0x18(%rbp)
jmp    18e3 <oligodg+0x7d3>
movsbl -0x19(%rbp),%ecx
mov    $0x4e,%eax
cmp    %ecx,%eax
jne    17f9 <oligodg+0x6e9>
mov    -0x18(%rbp),%eax
add    $0x627,%eax
mov    %eax,-0x18(%rbp)
jmp    19b5 <oligodg+0x8a5>
movsbl -0x19(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
jne    180c <oligodg+0x6fc>
jmp    1a87 <oligodg+0x977>
jmp    1b18 <oligodg+0xa08>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movsbl -0x19(%rbp),%ecx
mov    $0x41,%eax
cmp    %ecx,%eax
jne    1847 <oligodg+0x737>
mov    -0x18(%rbp),%eax
add    $0x640,%eax
mov    %eax,-0x18(%rbp)
jmp    166d <oligodg+0x55d>
movsbl -0x19(%rbp),%ecx
mov    $0x54,%eax
cmp    %ecx,%eax
jne    1868 <oligodg+0x758>
mov    -0x18(%rbp),%eax
add    $0x514,%eax
mov    %eax,-0x18(%rbp)
jmp    173f <oligodg+0x62f>
movsbl -0x19(%rbp),%ecx
mov    $0x47,%eax
cmp    %ecx,%eax
jne    1889 <oligodg+0x779>
mov    -0x18(%rbp),%eax
add    $0xc1c,%eax
mov    %eax,-0x18(%rbp)
jmp    1811 <oligodg+0x701>
movsbl -0x19(%rbp),%ecx
mov    $0x43,%eax
cmp    %ecx,%eax
jne    18aa <oligodg+0x79a>
mov    -0x18(%rbp),%eax
add    $0xc1c,%eax
mov    %eax,-0x18(%rbp)
jmp    18e3 <oligodg+0x7d3>
movsbl -0x19(%rbp),%ecx
mov    $0x4e,%eax
cmp    %ecx,%eax
jne    18cb <oligodg+0x7bb>
mov    -0x18(%rbp),%eax
add    $0x8e3,%eax
mov    %eax,-0x18(%rbp)
jmp    19b5 <oligodg+0x8a5>
movsbl -0x19(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
jne    18de <oligodg+0x7ce>
jmp    1a87 <oligodg+0x977>
jmp    1b18 <oligodg+0xa08>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movsbl -0x19(%rbp),%ecx
mov    $0x41,%eax
cmp    %ecx,%eax
jne    1919 <oligodg+0x809>
mov    -0x18(%rbp),%eax
add    $0x76c,%eax
mov    %eax,-0x18(%rbp)
jmp    166d <oligodg+0x55d>
movsbl -0x19(%rbp),%ecx
mov    $0x54,%eax
cmp    %ecx,%eax
jne    193a <oligodg+0x82a>
mov    -0x18(%rbp),%eax
add    $0x640,%eax
mov    %eax,-0x18(%rbp)
jmp    173f <oligodg+0x62f>
movsbl -0x19(%rbp),%ecx
mov    $0x47,%eax
cmp    %ecx,%eax
jne    195b <oligodg+0x84b>
mov    -0x18(%rbp),%eax
add    $0xe10,%eax
mov    %eax,-0x18(%rbp)
jmp    1811 <oligodg+0x701>
movsbl -0x19(%rbp),%ecx
mov    $0x43,%eax
cmp    %ecx,%eax
jne    197c <oligodg+0x86c>
mov    -0x18(%rbp),%eax
add    $0xc1c,%eax
mov    %eax,-0x18(%rbp)
jmp    18e3 <oligodg+0x7d3>
movsbl -0x19(%rbp),%ecx
mov    $0x4e,%eax
cmp    %ecx,%eax
jne    199d <oligodg+0x88d>
mov    -0x18(%rbp),%eax
add    $0x9f6,%eax
mov    %eax,-0x18(%rbp)
jmp    19b5 <oligodg+0x8a5>
movsbl -0x19(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
jne    19b0 <oligodg+0x8a0>
jmp    1a87 <oligodg+0x977>
jmp    1b18 <oligodg+0xa08>
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
movsbl -0x19(%rbp),%ecx
mov    $0x41,%eax
cmp    %ecx,%eax
jne    19eb <oligodg+0x8db>
mov    -0x18(%rbp),%eax
add    $0x627,%eax
mov    %eax,-0x18(%rbp)
jmp    166d <oligodg+0x55d>
movsbl -0x19(%rbp),%ecx
mov    $0x54,%eax
cmp    %ecx,%eax
jne    1a0c <oligodg+0x8fc>
mov    -0x18(%rbp),%eax
add    $0x627,%eax
mov    %eax,-0x18(%rbp)
jmp    173f <oligodg+0x62f>
movsbl -0x19(%rbp),%ecx
mov    $0x47,%eax
cmp    %ecx,%eax
jne    1a2d <oligodg+0x91d>
mov    -0x18(%rbp),%eax
add    $0x9f6,%eax
mov    %eax,-0x18(%rbp)
jmp    1811 <oligodg+0x701>
movsbl -0x19(%rbp),%ecx
mov    $0x43,%eax
cmp    %ecx,%eax
jne    1a4e <oligodg+0x93e>
mov    -0x18(%rbp),%eax
add    $0x8e3,%eax
mov    %eax,-0x18(%rbp)
jmp    18e3 <oligodg+0x7d3>
movsbl -0x19(%rbp),%ecx
mov    $0x4e,%eax
cmp    %ecx,%eax
jne    1a6f <oligodg+0x95f>
mov    -0x18(%rbp),%eax
add    $0x7ca,%eax
mov    %eax,-0x18(%rbp)
jmp    19b5 <oligodg+0x8a5>
movsbl -0x19(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
jne    1a82 <oligodg+0x972>
jmp    1a87 <oligodg+0x977>
jmp    1b18 <oligodg+0xa08>
cmpl   $0x0,-0x14(%rbp)
je     1afd <oligodg+0x9ed>
mov    -0x10(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
movsbl -0x19(%rbp),%eax
cmp    $0x41,%eax
je     1acc <oligodg+0x9bc>
movsbl -0x19(%rbp),%eax
cmp    $0x54,%eax
jne    1ad5 <oligodg+0x9c5>
mov    -0x18(%rbp),%eax
add    $0xffffffce,%eax
mov    %eax,-0x18(%rbp)
mov    -0x10(%rbp),%rdi
mov    $0x0,%al
call   1030 <symmetry@plt>
mov    %eax,-0x20(%rbp)
cmpl   $0x1,-0x20(%rbp)
jne    1af8 <oligodg+0x9e8>
mov    -0x18(%rbp),%eax
add    $0xfffffe52,%eax
mov    %eax,-0x18(%rbp)
jmp    1afd <oligodg+0x9ed>
cvtsi2sdl -0x18(%rbp),%xmm0
movsd  0x4fe(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1b25 <oligodg+0xa15>
movsd  0x4e0(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<oligodg>:
push   %rbx
movsd  0xee7(%rip),%xmm0
cmp    $0x1,%esi
ja     1158 <oligodg+0x48>
mov    %rdi,%rax
add    $0x1,%rdi
mov    (%rax),%al
test   %esi,%esi
je     115a <oligodg+0x4a>
cmp    $0x41,%al
mov    $0xfffff826,%ecx
mov    $0xfffff858,%ebx
cmove  %ecx,%ebx
cmp    $0x54,%al
cmove  %ecx,%ebx
add    $0xbf,%al
movzbl %al,%eax
cmp    $0x13,%al
ja     1158 <oligodg+0x48>
lea    0xec1(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
pop    %rbx
ret
xor    %ebx,%ebx
add    $0xbf,%al
movzbl %al,%eax
cmp    $0x13,%al
ja     1158 <oligodg+0x48>
lea    0x1064(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x3e8,%ebx
add    $0x1,%rdi
movzbl -0x1(%rdi),%eax
cmp    $0x41,%al
je     1180 <oligodg+0x70>
lea    -0x43(%rax),%ecx
movzbl %cl,%ecx
cmp    $0x11,%cl
ja     14e8 <oligodg+0x3d8>
lea    0xeb8(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x5a0,%ebx
jmp    1296 <oligodg+0x186>
add    $0x370,%ebx
jmp    12e6 <oligodg+0x1d6>
add    $0x370,%ebx
jmp    11d6 <oligodg+0xc6>
nop
add    $0x3e8,%ebx
add    $0x1,%rdi
movzbl -0x1(%rdi),%eax
cmp    $0x54,%al
je     11d0 <oligodg+0xc0>
lea    -0x41(%rax),%ecx
movzbl %cl,%ecx
cmp    $0xd,%cl
ja     14e8 <oligodg+0x3d8>
lea    0xeb0(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x514,%ebx
jmp    1296 <oligodg+0x186>
add    $0x5aa,%ebx
jmp    1236 <oligodg+0x126>
add    $0x244,%ebx
jmp    12e6 <oligodg+0x1d6>
add    $0x500,%ebx
jmp    1236 <oligodg+0x126>
nopw   0x0(%rax,%rax,1)
add    $0x730,%ebx
add    $0x1,%rdi
movzbl -0x1(%rdi),%eax
cmp    $0x47,%al
je     1230 <oligodg+0x120>
lea    -0x41(%rax),%ecx
movzbl %cl,%ecx
cmp    $0x13,%cl
ja     14e8 <oligodg+0x3d8>
lea    0xe88(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x514,%ebx
jmp    1186 <oligodg+0x76>
add    $0x8c0,%ebx
jmp    1296 <oligodg+0x186>
add    $0x514,%ebx
jmp    12e6 <oligodg+0x1d6>
add    $0x5a0,%ebx
jmp    11d6 <oligodg+0xc6>
nopw   0x0(%rax,%rax,1)
add    $0x730,%ebx
add    $0x1,%rdi
movzbl -0x1(%rdi),%eax
cmp    $0x43,%al
je     1290 <oligodg+0x180>
lea    -0x41(%rax),%ecx
movzbl %cl,%ecx
cmp    $0x13,%cl
ja     14e8 <oligodg+0x3d8>
lea    0xe78(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x5aa,%ebx
jmp    1186 <oligodg+0x76>
add    $0x87a,%ebx
jmp    1236 <oligodg+0x126>
add    $0x5aa,%ebx
jmp    12e6 <oligodg+0x1d6>
nop
add    $0x244,%ebx
add    $0x1,%rdi
movzbl -0x1(%rdi),%eax
cmp    $0x4e,%al
je     12e0 <oligodg+0x1d0>
lea    -0x41(%rax),%ecx
movzbl %cl,%ecx
cmp    $0x13,%cl
ja     14e8 <oligodg+0x3d8>
lea    0xe78(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x244,%ebx
jmp    1186 <oligodg+0x76>
add    $0x500,%ebx
jmp    11d6 <oligodg+0xc6>
add    $0x514,%ebx
jmp    1296 <oligodg+0x186>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x76c,%ebx
add    $0x1,%rdi
movzbl -0x1(%rdi),%eax
cmp    $0x41,%al
je     1340 <oligodg+0x230>
lea    -0x43(%rax),%ecx
movzbl %cl,%ecx
cmp    $0x11,%cl
ja     14e8 <oligodg+0x3d8>
lea    0xeb8(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x514,%ebx
jmp    1466 <oligodg+0x356>
add    $0x640,%ebx
jmp    1406 <oligodg+0x2f6>
add    $0x627,%ebx
jmp    14b6 <oligodg+0x3a6>
add    $0x5dc,%ebx
jmp    13a6 <oligodg+0x296>
nopw   0x0(%rax,%rax,1)
add    $0x76c,%ebx
add    $0x1,%rdi
movzbl -0x1(%rdi),%eax
cmp    $0x54,%al
je     13a0 <oligodg+0x290>
lea    -0x41(%rax),%ecx
movzbl %cl,%ecx
cmp    $0xd,%cl
ja     14e8 <oligodg+0x3d8>
lea    0xea0(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x384,%ebx
jmp    1346 <oligodg+0x236>
add    $0x640,%ebx
jmp    1466 <oligodg+0x356>
add    $0x76c,%ebx
jmp    1406 <oligodg+0x2f6>
add    $0x627,%ebx
jmp    14b6 <oligodg+0x3a6>
nopw   0x0(%rax,%rax,1)
add    $0xc1c,%ebx
add    $0x1,%rdi
movzbl -0x1(%rdi),%eax
cmp    $0x47,%al
je     1400 <oligodg+0x2f0>
lea    -0x41(%rax),%ecx
movzbl %cl,%ecx
cmp    $0x13,%cl
ja     14e8 <oligodg+0x3d8>
lea    0xe78(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x640,%ebx
jmp    1346 <oligodg+0x236>
add    $0xc1c,%ebx
jmp    1466 <oligodg+0x356>
add    $0x8e3,%ebx
jmp    14b6 <oligodg+0x3a6>
add    $0x514,%ebx
jmp    13a6 <oligodg+0x296>
nopw   0x0(%rax,%rax,1)
add    $0xc1c,%ebx
add    $0x1,%rdi
movzbl -0x1(%rdi),%eax
cmp    $0x43,%al
je     1460 <oligodg+0x350>
lea    -0x41(%rax),%ecx
movzbl %cl,%ecx
cmp    $0x13,%cl
ja     14e8 <oligodg+0x3d8>
lea    0xe6c(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x76c,%ebx
jmp    1346 <oligodg+0x236>
add    $0xe10,%ebx
jmp    1406 <oligodg+0x2f6>
add    $0x9f6,%ebx
jmp    14b6 <oligodg+0x3a6>
nopl   0x0(%rax,%rax,1)
add    $0x7ca,%ebx
add    $0x1,%rdi
movzbl -0x1(%rdi),%eax
cmp    $0x4e,%al
je     14b0 <oligodg+0x3a0>
lea    -0x41(%rax),%ecx
movzbl %cl,%ecx
cmp    $0x13,%cl
ja     14e8 <oligodg+0x3d8>
lea    0xe6c(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
add    $0x627,%ebx
jmp    1346 <oligodg+0x236>
test   %al,%al
jne    1158 <oligodg+0x48>
test   %esi,%esi
je     151b <oligodg+0x40b>
mov    -0x2(%rdi),%al
add    $0xfffffffffffffffe,%rdi
cmp    $0x54,%al
je     1503 <oligodg+0x3f3>
cmp    $0x41,%al
jne    1506 <oligodg+0x3f6>
add    $0xffffffce,%ebx
xor    %eax,%eax
call   1030 <symmetry@plt>
lea    -0x1ae(%rbx),%ecx
cmp    $0x1,%eax
cmovne %ebx,%ecx
mov    %ecx,%ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
divsd  0xade(%rip),%xmm0
pop    %rbx
ret
add    $0x640,%ebx
jmp    13a6 <oligodg+0x296>
add    $0x8e3,%ebx
jmp    1466 <oligodg+0x356>
add    $0x9f6,%ebx
jmp    1406 <oligodg+0x2f6>
add    $0x627,%ebx
jmp    13a6 <oligodg+0x296>

LLVM IR (-O0):
define double @oligodg(i8* %0, i32 %1) {
%3 = alloca double
%4 = alloca i8*
%5 = alloca i32
%6 = alloca i32
%7 = alloca i8
%8 = alloca i32
store i8* %0, i8** %4
store i32 %1, i32* %5
store i32 0, i32* %6
%9 = load i32, i32* %5
%10 = icmp ne i32 %9, 0
br i1 %10, label %11, label %15
11: ; preds = %2
%12 = load i32, i32* %5
%13 = icmp ne i32 %12, 1
br i1 %13, label %14, label %15
14: ; preds = %11
store double 0xC12E847FFFF2E48F, double* %3
br label %569
15: ; preds = %11, %2
%16 = load i8*, i8** %4
%17 = load i8, i8* %16
store i8 %17, i8* %7
%18 = load i8*, i8** %4
%19 = getelementptr inbounds i8, i8* %18, i32 1
store i8* %19, i8** %4
%20 = load i32, i32* %5
%21 = icmp ne i32 %20, 0
br i1 %21, label %22, label %284
22: ; preds = %15
store i32 -1960, i32* %6
%23 = load i8, i8* %7
%24 = sext i8 %23 to i32
%25 = icmp eq i32 %24, 65
br i1 %25, label %30, label %26
26: ; preds = %22
%27 = load i8, i8* %7
%28 = sext i8 %27 to i32
%29 = icmp eq i32 %28, 84
br i1 %29, label %30, label %33
30: ; preds = %26, %22
%31 = load i32, i32* %6
%32 = add nsw i32 %31, -50
store i32 %32, i32* %6
br label %33
33: ; preds = %30, %26
%34 = load i8, i8* %7
%35 = sext i8 %34 to i32
%36 = icmp eq i32 %35, 65
br i1 %36, label %37, label %38
37: ; preds = %33
br label %59
38: ; preds = %33
%39 = load i8, i8* %7
%40 = sext i8 %39 to i32
%41 = icmp eq i32 %40, 71
br i1 %41, label %42, label %43
42: ; preds = %38
br label %149
43: ; preds = %38
%44 = load i8, i8* %7
%45 = sext i8 %44 to i32
%46 = icmp eq i32 %45, 84
br i1 %46, label %47, label %48
47: ; preds = %43
br label %104
48: ; preds = %43
%49 = load i8, i8* %7
%50 = sext i8 %49 to i32
%51 = icmp eq i32 %50, 67
br i1 %51, label %52, label %53
52: ; preds = %48
br label %194
53: ; preds = %48
%54 = load i8, i8* %7
%55 = sext i8 %54 to i32
%56 = icmp eq i32 %55, 78
br i1 %56, label %57, label %58
57: ; preds = %53
br label %239
58: ; preds = %53
br label %568
59: ; preds = %247, %202, %157, %112, %67, %37
%60 = load i8*, i8** %4
%61 = load i8, i8* %60
store i8 %61, i8* %7
%62 = load i8*, i8** %4
%63 = getelementptr inbounds i8, i8* %62, i32 1
store i8* %63, i8** %4
%64 = load i8, i8* %7
%65 = sext i8 %64 to i32
%66 = icmp eq i32 65, %65
br i1 %66, label %67, label %70
67: ; preds = %59
%68 = load i32, i32* %6
%69 = add nsw i32 %68, 1000
store i32 %69, i32* %6
br label %59
70: ; preds = %59
%71 = load i8, i8* %7
%72 = sext i8 %71 to i32
%73 = icmp eq i32 84, %72
br i1 %73, label %74, label %77
74: ; preds = %70
%75 = load i32, i32* %6
%76 = add nsw i32 %75, 880
store i32 %76, i32* %6
br label %104
77: ; preds = %70
%78 = load i8, i8* %7
%79 = sext i8 %78 to i32
%80 = icmp eq i32 71, %79
br i1 %80, label %81, label %84
81: ; preds = %77
%82 = load i32, i32* %6
%83 = add nsw i32 %82, 1280
store i32 %83, i32* %6
br label %149
84: ; preds = %77
%85 = load i8, i8* %7
%86 = sext i8 %85 to i32
%87 = icmp eq i32 67, %86
br i1 %87, label %88, label %91
88: ; preds = %84
%89 = load i32, i32* %6
%90 = add nsw i32 %89, 1440
store i32 %90, i32* %6
br label %194
91: ; preds = %84
%92 = load i8, i8* %7
%93 = sext i8 %92 to i32
%94 = icmp eq i32 78, %93
br i1 %94, label %95, label %98
95: ; preds = %91
%96 = load i32, i32* %6
%97 = add nsw i32 %96, 880
store i32 %97, i32* %6
br label %239
98: ; preds = %91
%99 = load i8, i8* %7
%100 = sext i8 %99 to i32
%101 = icmp eq i32 0, %100
br i1 %101, label %102, label %103
102: ; preds = %98
br label %535
103: ; preds = %98
br label %568
104: ; preds = %254, %209, %164, %119, %74, %47
%105 = load i8*, i8** %4
%106 = load i8, i8* %105
store i8 %106, i8* %7
%107 = load i8*, i8** %4
%108 = getelementptr inbounds i8, i8* %107, i32 1
store i8* %108, i8** %4
%109 = load i8, i8* %7
%110 = sext i8 %109 to i32
%111 = icmp eq i32 65, %110
br i1 %111, label %112, label %115
112: ; preds = %104
%113 = load i32, i32* %6
%114 = add nsw i32 %113, 580
store i32 %114, i32* %6
br label %59
115: ; preds = %104
%116 = load i8, i8* %7
%117 = sext i8 %116 to i32
%118 = icmp eq i32 84, %117
br i1 %118, label %119, label %122
119: ; preds = %115
%120 = load i32, i32* %6
%121 = add nsw i32 %120, 1000
store i32 %121, i32* %6
br label %104
122: ; preds = %115
%123 = load i8, i8* %7
%124 = sext i8 %123 to i32
%125 = icmp eq i32 71, %124
br i1 %125, label %126, label %129
126: ; preds = %122
%127 = load i32, i32* %6
%128 = add nsw i32 %127, 1450
store i32 %128, i32* %6
br label %149
129: ; preds = %122
%130 = load i8, i8* %7
%131 = sext i8 %130 to i32
%132 = icmp eq i32 67, %131
br i1 %132, label %133, label %136
133: ; preds = %129
%134 = load i32, i32* %6
%135 = add nsw i32 %134, 1300
store i32 %135, i32* %6
br label %194
136: ; preds = %129
%137 = load i8, i8* %7
%138 = sext i8 %137 to i32
%139 = icmp eq i32 78, %138
br i1 %139, label %140, label %143
140: ; preds = %136
%141 = load i32, i32* %6
%142 = add nsw i32 %141, 580
store i32 %142, i32* %6
br label %239
143: ; preds = %136
%144 = load i8, i8* %7
%145 = sext i8 %144 to i32
%146 = icmp eq i32 0, %145
br i1 %146, label %147, label %148
147: ; preds = %143
br label %535
148: ; preds = %143
br label %568
149: ; preds = %261, %216, %171, %126, %81, %42
%150 = load i8*, i8** %4
%151 = load i8, i8* %150
store i8 %151, i8* %7
%152 = load i8*, i8** %4
%153 = getelementptr inbounds i8, i8* %152, i32 1
store i8* %153, i8** %4
%154 = load i8, i8* %7
%155 = sext i8 %154 to i32
%156 = icmp eq i32 65, %155
br i1 %156, label %157, label %160
157: ; preds = %149
%158 = load i32, i32* %6
%159 = add nsw i32 %158, 1300
store i32 %159, i32* %6
br label %59
160: ; preds = %149
%161 = load i8, i8* %7
%162 = sext i8 %161 to i32
%163 = icmp eq i32 84, %162
br i1 %163, label %164, label %167
164: ; preds = %160
%165 = load i32, i32* %6
%166 = add nsw i32 %165, 1440
store i32 %166, i32* %6
br label %104
167: ; preds = %160
%168 = load i8, i8* %7
%169 = sext i8 %168 to i32
%170 = icmp eq i32 71, %169
br i1 %170, label %171, label %174
171: ; preds = %167
%172 = load i32, i32* %6
%173 = add nsw i32 %172, 1840
store i32 %173, i32* %6
br label %149
174: ; preds = %167
%175 = load i8, i8* %7
%176 = sext i8 %175 to i32
%177 = icmp eq i32 67, %176
br i1 %177, label %178, label %181
178: ; preds = %174
%179 = load i32, i32* %6
%180 = add nsw i32 %179, 2240
store i32 %180, i32* %6
br label %194
181: ; preds = %174
%182 = load i8, i8* %7
%183 = sext i8 %182 to i32
%184 = icmp eq i32 78, %183
br i1 %184, label %185, label %188
185: ; preds = %181
%186 = load i32, i32* %6
%187 = add nsw i32 %186, 1300
store i32 %187, i32* %6
br label %239
188: ; preds = %181
%189 = load i8, i8* %7
%190 = sext i8 %189 to i32
%191 = icmp eq i32 0, %190
br i1 %191, label %192, label %193
192: ; preds = %188
br label %535
193: ; preds = %188
br label %568
194: ; preds = %268, %223, %178, %133, %88, %52
%195 = load i8*, i8** %4
%196 = load i8, i8* %195
store i8 %196, i8* %7
%197 = load i8*, i8** %4
%198 = getelementptr inbounds i8, i8* %197, i32 1
store i8* %198, i8** %4
%199 = load i8, i8* %7
%200 = sext i8 %199 to i32
%201 = icmp eq i32 65, %200
br i1 %201, label %202, label %205
202: ; preds = %194
%203 = load i32, i32* %6
%204 = add nsw i32 %203, 1450
store i32 %204, i32* %6
br label %59
205: ; preds = %194
%206 = load i8, i8* %7
%207 = sext i8 %206 to i32
%208 = icmp eq i32 84, %207
br i1 %208, label %209, label %212
209: ; preds = %205
%210 = load i32, i32* %6
%211 = add nsw i32 %210, 1280
store i32 %211, i32* %6
br label %104
212: ; preds = %205
%213 = load i8, i8* %7
%214 = sext i8 %213 to i32
%215 = icmp eq i32 71, %214
br i1 %215, label %216, label %219
216: ; preds = %212
%217 = load i32, i32* %6
%218 = add nsw i32 %217, 2170
store i32 %218, i32* %6
br label %149
219: ; preds = %212
%220 = load i8, i8* %7
%221 = sext i8 %220 to i32
%222 = icmp eq i32 67, %221
br i1 %222, label %223, label %226
223: ; preds = %219
%224 = load i32, i32* %6
%225 = add nsw i32 %224, 1840
store i32 %225, i32* %6
br label %194
226: ; preds = %219
%227 = load i8, i8* %7
%228 = sext i8 %227 to i32
%229 = icmp eq i32 78, %228
br i1 %229, label %230, label %233
230: ; preds = %226
%231 = load i32, i32* %6
%232 = add nsw i32 %231, 1450
store i32 %232, i32* %6
br label %239
233: ; preds = %226
%234 = load i8, i8* %7
%235 = sext i8 %234 to i32
%236 = icmp eq i32 0, %235
br i1 %236, label %237, label %238
237: ; preds = %233
br label %535
238: ; preds = %233
br label %568
239: ; preds = %275, %230, %185, %140, %95, %57
%240 = load i8*, i8** %4
%241 = load i8, i8* %240
store i8 %241, i8* %7
%242 = load i8*, i8** %4
%243 = getelementptr inbounds i8, i8* %242, i32 1
store i8* %243, i8** %4
%244 = load i8, i8* %7
%245 = sext i8 %244 to i32
%246 = icmp eq i32 65, %245
br i1 %246, label %247, label %250
247: ; preds = %239
%248 = load i32, i32* %6
%249 = add nsw i32 %248, 580
store i32 %249, i32* %6
br label %59
250: ; preds = %239
%251 = load i8, i8* %7
%252 = sext i8 %251 to i32
%253 = icmp eq i32 84, %252
br i1 %253, label %254, label %257
254: ; preds = %250
%255 = load i32, i32* %6
%256 = add nsw i32 %255, 880
store i32 %256, i32* %6
br label %104
257: ; preds = %250
%258 = load i8, i8* %7
%259 = sext i8 %258 to i32
%260 = icmp eq i32 71, %259
br i1 %260, label %261, label %264
261: ; preds = %257
%262 = load i32, i32* %6
%263 = add nsw i32 %262, 1280
store i32 %263, i32* %6
br label %149
264: ; preds = %257
%265 = load i8, i8* %7
%266 = sext i8 %265 to i32
%267 = icmp eq i32 67, %266
br i1 %267, label %268, label %271
268: ; preds = %264
%269 = load i32, i32* %6
%270 = add nsw i32 %269, 1300
store i32 %270, i32* %6
br label %194
271: ; preds = %264
%272 = load i8, i8* %7
%273 = sext i8 %272 to i32
%274 = icmp eq i32 78, %273
br i1 %274, label %275, label %278
275: ; preds = %271
%276 = load i32, i32* %6
%277 = add nsw i32 %276, 580
store i32 %277, i32* %6
br label %239
278: ; preds = %271
%279 = load i8, i8* %7
%280 = sext i8 %279 to i32
%281 = icmp eq i32 0, %280
br i1 %281, label %282, label %283
282: ; preds = %278
br label %535
283: ; preds = %278
br label %568
284: ; preds = %15
%285 = load i8, i8* %7
%286 = sext i8 %285 to i32
%287 = icmp eq i32 %286, 65
br i1 %287, label %288, label %289
288: ; preds = %284
br label %310
289: ; preds = %284
%290 = load i8, i8* %7
%291 = sext i8 %290 to i32
%292 = icmp eq i32 %291, 71
br i1 %292, label %293, label %294
293: ; preds = %289
br label %400
294: ; preds = %289
%295 = load i8, i8* %7
%296 = sext i8 %295 to i32
%297 = icmp eq i32 %296, 84
br i1 %297, label %298, label %299
298: ; preds = %294
br label %355
299: ; preds = %294
%300 = load i8, i8* %7
%301 = sext i8 %300 to i32
%302 = icmp eq i32 %301, 67
br i1 %302, label %303, label %304
303: ; preds = %299
br label %445
304: ; preds = %299
%305 = load i8, i8* %7
%306 = sext i8 %305 to i32
%307 = icmp eq i32 %306, 78
br i1 %307, label %308, label %309
308: ; preds = %304
br label %490
309: ; preds = %304
br label %568
310: ; preds = %498, %453, %408, %363, %318, %288
%311 = load i8*, i8** %4
%312 = load i8, i8* %311
store i8 %312, i8* %7
%313 = load i8*, i8** %4
%314 = getelementptr inbounds i8, i8* %313, i32 1
store i8* %314, i8** %4
%315 = load i8, i8* %7
%316 = sext i8 %315 to i32
%317 = icmp eq i32 65, %316
br i1 %317, label %318, label %321
318: ; preds = %310
%319 = load i32, i32* %6
%320 = add nsw i32 %319, 1900
store i32 %320, i32* %6
br label %310
321: ; preds = %310
%322 = load i8, i8* %7
%323 = sext i8 %322 to i32
%324 = icmp eq i32 84, %323
br i1 %324, label %325, label %328
325: ; preds = %321
%326 = load i32, i32* %6
%327 = add nsw i32 %326, 1500
store i32 %327, i32* %6
br label %355
328: ; preds = %321
%329 = load i8, i8* %7
%330 = sext i8 %329 to i32
%331 = icmp eq i32 71, %330
br i1 %331, label %332, label %335
332: ; preds = %328
%333 = load i32, i32* %6
%334 = add nsw i32 %333, 1600
store i32 %334, i32* %6
br label %400
335: ; preds = %328
%336 = load i8, i8* %7
%337 = sext i8 %336 to i32
%338 = icmp eq i32 67, %337
br i1 %338, label %339, label %342
339: ; preds = %335
%340 = load i32, i32* %6
%341 = add nsw i32 %340, 1300
store i32 %341, i32* %6
br label %445
342: ; preds = %335
%343 = load i8, i8* %7
%344 = sext i8 %343 to i32
%345 = icmp eq i32 78, %344
br i1 %345, label %346, label %349
346: ; preds = %342
%347 = load i32, i32* %6
%348 = add nsw i32 %347, 1575
store i32 %348, i32* %6
br label %490
349: ; preds = %342
%350 = load i8, i8* %7
%351 = sext i8 %350 to i32
%352 = icmp eq i32 0, %351
br i1 %352, label %353, label %354
353: ; preds = %349
br label %535
354: ; preds = %349
br label %568
355: ; preds = %505, %460, %415, %370, %325, %298
%356 = load i8*, i8** %4
%357 = load i8, i8* %356
store i8 %357, i8* %7
%358 = load i8*, i8** %4
%359 = getelementptr inbounds i8, i8* %358, i32 1
store i8* %359, i8** %4
%360 = load i8, i8* %7
%361 = sext i8 %360 to i32
%362 = icmp eq i32 65, %361
br i1 %362, label %363, label %366
363: ; preds = %355
%364 = load i32, i32* %6
%365 = add nsw i32 %364, 900
store i32 %365, i32* %6
br label %310
366: ; preds = %355
%367 = load i8, i8* %7
%368 = sext i8 %367 to i32
%369 = icmp eq i32 84, %368
br i1 %369, label %370, label %373
370: ; preds = %366
%371 = load i32, i32* %6
%372 = add nsw i32 %371, 1900
store i32 %372, i32* %6
br label %355
373: ; preds = %366
%374 = load i8, i8* %7
%375 = sext i8 %374 to i32
%376 = icmp eq i32 71, %375
br i1 %376, label %377, label %380
377: ; preds = %373
%378 = load i32, i32* %6
%379 = add nsw i32 %378, 1900
store i32 %379, i32* %6
br label %400
380: ; preds = %373
%381 = load i8, i8* %7
%382 = sext i8 %381 to i32
%383 = icmp eq i32 67, %382
br i1 %383, label %384, label %387
384: ; preds = %380
%385 = load i32, i32* %6
%386 = add nsw i32 %385, 1600
store i32 %386, i32* %6
br label %445
387: ; preds = %380
%388 = load i8, i8* %7
%389 = sext i8 %388 to i32
%390 = icmp eq i32 78, %389
br i1 %390, label %391, label %394
391: ; preds = %387
%392 = load i32, i32* %6
%393 = add nsw i32 %392, 1575
store i32 %393, i32* %6
br label %490
394: ; preds = %387
%395 = load i8, i8* %7
%396 = sext i8 %395 to i32
%397 = icmp eq i32 0, %396
br i1 %397, label %398, label %399
398: ; preds = %394
br label %535
399: ; preds = %394
br label %568
400: ; preds = %512, %467, %422, %377, %332, %293
%401 = load i8*, i8** %4
%402 = load i8, i8* %401
store i8 %402, i8* %7
%403 = load i8*, i8** %4
%404 = getelementptr inbounds i8, i8* %403, i32 1
store i8* %404, i8** %4
%405 = load i8, i8* %7
%406 = sext i8 %405 to i32
%407 = icmp eq i32 65, %406
br i1 %407, label %408, label %411
408: ; preds = %400
%409 = load i32, i32* %6
%410 = add nsw i32 %409, 1600
store i32 %410, i32* %6
br label %310
411: ; preds = %400
%412 = load i8, i8* %7
%413 = sext i8 %412 to i32
%414 = icmp eq i32 84, %413
br i1 %414, label %415, label %418
415: ; preds = %411
%416 = load i32, i32* %6
%417 = add nsw i32 %416, 1300
store i32 %417, i32* %6
br label %355
418: ; preds = %411
%419 = load i8, i8* %7
%420 = sext i8 %419 to i32
%421 = icmp eq i32 71, %420
br i1 %421, label %422, label %425
422: ; preds = %418
%423 = load i32, i32* %6
%424 = add nsw i32 %423, 3100
store i32 %424, i32* %6
br label %400
425: ; preds = %418
%426 = load i8, i8* %7
%427 = sext i8 %426 to i32
%428 = icmp eq i32 67, %427
br i1 %428, label %429, label %432
429: ; preds = %425
%430 = load i32, i32* %6
%431 = add nsw i32 %430, 3100
store i32 %431, i32* %6
br label %445
432: ; preds = %425
%433 = load i8, i8* %7
%434 = sext i8 %433 to i32
%435 = icmp eq i32 78, %434
br i1 %435, label %436, label %439
436: ; preds = %432
%437 = load i32, i32* %6
%438 = add nsw i32 %437, 2275
store i32 %438, i32* %6
br label %490
439: ; preds = %432
%440 = load i8, i8* %7
%441 = sext i8 %440 to i32
%442 = icmp eq i32 0, %441
br i1 %442, label %443, label %444
443: ; preds = %439
br label %535
444: ; preds = %439
br label %568
445: ; preds = %519, %474, %429, %384, %339, %303
%446 = load i8*, i8** %4
%447 = load i8, i8* %446
store i8 %447, i8* %7
%448 = load i8*, i8** %4
%449 = getelementptr inbounds i8, i8* %448, i32 1
store i8* %449, i8** %4
%450 = load i8, i8* %7
%451 = sext i8 %450 to i32
%452 = icmp eq i32 65, %451
br i1 %452, label %453, label %456
453: ; preds = %445
%454 = load i32, i32* %6
%455 = add nsw i32 %454, 1900
store i32 %455, i32* %6
br label %310
456: ; preds = %445
%457 = load i8, i8* %7
%458 = sext i8 %457 to i32
%459 = icmp eq i32 84, %458
br i1 %459, label %460, label %463
460: ; preds = %456
%461 = load i32, i32* %6
%462 = add nsw i32 %461, 1600
store i32 %462, i32* %6
br label %355
463: ; preds = %456
%464 = load i8, i8* %7
%465 = sext i8 %464 to i32
%466 = icmp eq i32 71, %465
br i1 %466, label %467, label %470
467: ; preds = %463
%468 = load i32, i32* %6
%469 = add nsw i32 %468, 3600
store i32 %469, i32* %6
br label %400
470: ; preds = %463
%471 = load i8, i8* %7
%472 = sext i8 %471 to i32
%473 = icmp eq i32 67, %472
br i1 %473, label %474, label %477
474: ; preds = %470
%475 = load i32, i32* %6
%476 = add nsw i32 %475, 3100
store i32 %476, i32* %6
br label %445
477: ; preds = %470
%478 = load i8, i8* %7
%479 = sext i8 %478 to i32
%480 = icmp eq i32 78, %479
br i1 %480, label %481, label %484
481: ; preds = %477
%482 = load i32, i32* %6
%483 = add nsw i32 %482, 2550
store i32 %483, i32* %6
br label %490
484: ; preds = %477
%485 = load i8, i8* %7
%486 = sext i8 %485 to i32
%487 = icmp eq i32 0, %486
br i1 %487, label %488, label %489
488: ; preds = %484
br label %535
489: ; preds = %484
br label %568
490: ; preds = %526, %481, %436, %391, %346, %308
%491 = load i8*, i8** %4
%492 = load i8, i8* %491
store i8 %492, i8* %7
%493 = load i8*, i8** %4
%494 = getelementptr inbounds i8, i8* %493, i32 1
store i8* %494, i8** %4
%495 = load i8, i8* %7
%496 = sext i8 %495 to i32
%497 = icmp eq i32 65, %496
br i1 %497, label %498, label %501
498: ; preds = %490
%499 = load i32, i32* %6
%500 = add nsw i32 %499, 1575
store i32 %500, i32* %6
br label %310
501: ; preds = %490
%502 = load i8, i8* %7
%503 = sext i8 %502 to i32
%504 = icmp eq i32 84, %503
br i1 %504, label %505, label %508
505: ; preds = %501
%506 = load i32, i32* %6
%507 = add nsw i32 %506, 1575
store i32 %507, i32* %6
br label %355
508: ; preds = %501
%509 = load i8, i8* %7
%510 = sext i8 %509 to i32
%511 = icmp eq i32 71, %510
br i1 %511, label %512, label %515
512: ; preds = %508
%513 = load i32, i32* %6
%514 = add nsw i32 %513, 2550
store i32 %514, i32* %6
br label %400
515: ; preds = %508
%516 = load i8, i8* %7
%517 = sext i8 %516 to i32
%518 = icmp eq i32 67, %517
br i1 %518, label %519, label %522
519: ; preds = %515
%520 = load i32, i32* %6
%521 = add nsw i32 %520, 2275
store i32 %521, i32* %6
br label %445
522: ; preds = %515
%523 = load i8, i8* %7
%524 = sext i8 %523 to i32
%525 = icmp eq i32 78, %524
br i1 %525, label %526, label %529
526: ; preds = %522
%527 = load i32, i32* %6
%528 = add nsw i32 %527, 1994
store i32 %528, i32* %6
br label %490
529: ; preds = %522
%530 = load i8, i8* %7
%531 = sext i8 %530 to i32
%532 = icmp eq i32 0, %531
br i1 %532, label %533, label %534
533: ; preds = %529
br label %535
534: ; preds = %529
br label %568
535: ; preds = %533, %488, %443, %398, %353, %282, %237, %192, %147, %102
%536 = load i32, i32* %5
%537 = icmp ne i32 %536, 0
br i1 %537, label %538, label %564
538: ; preds = %535
%539 = load i8*, i8** %4
%540 = getelementptr inbounds i8, i8* %539, i32 -1
store i8* %540, i8** %4
%541 = load i8*, i8** %4
%542 = getelementptr inbounds i8, i8* %541, i32 -1
store i8* %542, i8** %4
%543 = load i8*, i8** %4
%544 = load i8, i8* %543
store i8 %544, i8* %7
%545 = load i8, i8* %7
%546 = sext i8 %545 to i32
%547 = icmp eq i32 %546, 65
br i1 %547, label %552, label %548
548: ; preds = %538
%549 = load i8, i8* %7
%550 = sext i8 %549 to i32
%551 = icmp eq i32 %550, 84
br i1 %551, label %552, label %555
552: ; preds = %548, %538
%553 = load i32, i32* %6
%554 = add nsw i32 %553, -50
store i32 %554, i32* %6
br label %555
555: ; preds = %552, %548
%556 = load i8*, i8** %4
%557 = call i32 (i8*, ...) bitcast (i32 (...)* @symmetry to i32 (i8*, ...)*)(i8* %556)
store i32 %557, i32* %8
%558 = load i32, i32* %8
%559 = icmp eq i32 %558, 1
br i1 %559, label %560, label %563
560: ; preds = %555
%561 = load i32, i32* %6
%562 = add nsw i32 %561, -430
store i32 %562, i32* %6
br label %563
563: ; preds = %560, %555
br label %564
564: ; preds = %563, %535
%565 = load i32, i32* %6
%566 = sitofp i32 %565 to double
%567 = fdiv double %566, 1.000000e+03
store double %567, double* %3
br label %569
568: ; preds = %534, %489, %444, %399, %354, %309, %283, %238, %193, %148, %103, %58
store double 0xC12E847FFFF2E48F, double* %3
br label %569
569: ; preds = %568, %564, %14
%570 = load double, double* %3
ret double %570
}

LLVM IR (-O2):
define double @oligodg(i8* %0, i32 %1) {
%3 = icmp eq i32 %1, 0
%4 = icmp ult i32 %1, 2
br i1 %4, label %5, label %212
5: ; preds = %2
%6 = load i8, i8* %0
%7 = getelementptr inbounds i8, i8* %0, i64 1
br i1 %3, label %103, label %8
8: ; preds = %5
%9 = icmp eq i8 %6, 84
%10 = icmp eq i8 %6, 65
%11 = or i1 %9, %10
%12 = select i1 %11, i32 -2010, i32 -1960
switch i8 %6, label %212 [
i8 65, label %13
i8 71, label %19
i8 84, label %16
i8 67, label %22
i8 78, label %85
]
13: ; preds = %45, %60, %75, %93, %8
%14 = phi i8* [ %7, %8 ], [ %44, %45 ], [ %59, %60 ], [ %74, %75 ], [ %92, %93 ]
%15 = phi i32 [ %12, %8 ], [ %46, %45 ], [ %61, %60 ], [ %76, %75 ], [ %94, %93 ]
br label %25
16: ; preds = %32, %62, %77, %95, %8
%17 = phi i8* [ %29, %32 ], [ %59, %62 ], [ %74, %77 ], [ %92, %95 ], [ %7, %8 ]
%18 = phi i32 [ %33, %32 ], [ %63, %62 ], [ %78, %77 ], [ %96, %95 ], [ %12, %8 ]
br label %40
19: ; preds = %34, %49, %79, %97, %8
%20 = phi i8* [ %44, %49 ], [ %74, %79 ], [ %92, %97 ], [ %29, %34 ], [ %7, %8 ]
%21 = phi i32 [ %50, %49 ], [ %80, %79 ], [ %98, %97 ], [ %35, %34 ], [ %12, %8 ]
br label %55
22: ; preds = %36, %51, %66, %99, %8
%23 = phi i8* [ %59, %66 ], [ %92, %99 ], [ %44, %51 ], [ %29, %36 ], [ %7, %8 ]
%24 = phi i32 [ %67, %66 ], [ %100, %99 ], [ %52, %51 ], [ %37, %36 ], [ %12, %8 ]
br label %70
25: ; preds = %13, %30
%26 = phi i8* [ %29, %30 ], [ %14, %13 ]
%27 = phi i32 [ %31, %30 ], [ %15, %13 ]
%28 = load i8, i8* %26
%29 = getelementptr inbounds i8, i8* %26, i64 1
switch i8 %28, label %212 [
i8 65, label %30
i8 84, label %32
i8 71, label %34
i8 67, label %36
i8 78, label %38
i8 0, label %194
]
30: ; preds = %25
%31 = add nsw i32 %27, 1000
br label %25
32: ; preds = %25
%33 = add nsw i32 %27, 880
br label %16
34: ; preds = %25
%35 = add nsw i32 %27, 1280
br label %19
36: ; preds = %25
%37 = add nsw i32 %27, 1440
br label %22
38: ; preds = %25
%39 = add nsw i32 %27, 880
br label %85
40: ; preds = %16, %47
%41 = phi i8* [ %44, %47 ], [ %17, %16 ]
%42 = phi i32 [ %48, %47 ], [ %18, %16 ]
%43 = load i8, i8* %41
%44 = getelementptr inbounds i8, i8* %41, i64 1
switch i8 %43, label %212 [
i8 65, label %45
i8 84, label %47
i8 71, label %49
i8 67, label %51
i8 78, label %53
i8 0, label %194
]
45: ; preds = %40
%46 = add nsw i32 %42, 580
br label %13
47: ; preds = %40
%48 = add nsw i32 %42, 1000
br label %40
49: ; preds = %40
%50 = add nsw i32 %42, 1450
br label %19
51: ; preds = %40
%52 = add nsw i32 %42, 1300
br label %22
53: ; preds = %40
%54 = add nsw i32 %42, 580
br label %85
55: ; preds = %19, %64
%56 = phi i8* [ %59, %64 ], [ %20, %19 ]
%57 = phi i32 [ %65, %64 ], [ %21, %19 ]
%58 = load i8, i8* %56
%59 = getelementptr inbounds i8, i8* %56, i64 1
switch i8 %58, label %212 [
i8 65, label %60
i8 84, label %62
i8 71, label %64
i8 67, label %66
i8 78, label %68
i8 0, label %194
]
60: ; preds = %55
%61 = add nsw i32 %57, 1300
br label %13
62: ; preds = %55
%63 = add nsw i32 %57, 1440
br label %16
64: ; preds = %55
%65 = add nsw i32 %57, 1840
br label %55
66: ; preds = %55
%67 = add nsw i32 %57, 2240
br label %22
68: ; preds = %55
%69 = add nsw i32 %57, 1300
br label %85
70: ; preds = %22, %81
%71 = phi i8* [ %74, %81 ], [ %23, %22 ]
%72 = phi i32 [ %82, %81 ], [ %24, %22 ]
%73 = load i8, i8* %71
%74 = getelementptr inbounds i8, i8* %71, i64 1
switch i8 %73, label %212 [
i8 65, label %75
i8 84, label %77
i8 71, label %79
i8 67, label %81
i8 78, label %83
i8 0, label %194
]
75: ; preds = %70
%76 = add nsw i32 %72, 1450
br label %13
77: ; preds = %70
%78 = add nsw i32 %72, 1280
br label %16
79: ; preds = %70
%80 = add nsw i32 %72, 2170
br label %19
81: ; preds = %70
%82 = add nsw i32 %72, 1840
br label %70
83: ; preds = %70
%84 = add nsw i32 %72, 1450
br label %85
85: ; preds = %38, %53, %68, %83, %8
%86 = phi i8* [ %74, %83 ], [ %59, %68 ], [ %44, %53 ], [ %29, %38 ], [ %7, %8 ]
%87 = phi i32 [ %84, %83 ], [ %69, %68 ], [ %54, %53 ], [ %39, %38 ], [ %12, %8 ]
br label %88
88: ; preds = %85, %101
%89 = phi i8* [ %92, %101 ], [ %86, %85 ]
%90 = phi i32 [ %102, %101 ], [ %87, %85 ]
%91 = load i8, i8* %89
%92 = getelementptr inbounds i8, i8* %89, i64 1
switch i8 %91, label %212 [
i8 65, label %93
i8 84, label %95
i8 71, label %97
i8 67, label %99
i8 78, label %101
i8 0, label %194
]
93: ; preds = %88
%94 = add nsw i32 %90, 580
br label %13
95: ; preds = %88
%96 = add nsw i32 %90, 880
br label %16
97: ; preds = %88
%98 = add nsw i32 %90, 1280
br label %19
99: ; preds = %88
%100 = add nsw i32 %90, 1300
br label %22
101: ; preds = %88
%102 = add nsw i32 %90, 580
br label %88
103: ; preds = %5
switch i8 %6, label %212 [
i8 65, label %104
i8 71, label %110
i8 84, label %107
i8 67, label %113
i8 78, label %176
]
104: ; preds = %136, %151, %166, %184, %103
%105 = phi i8* [ %7, %103 ], [ %135, %136 ], [ %150, %151 ], [ %165, %166 ], [ %183, %184 ]
%106 = phi i32 [ 0, %103 ], [ %137, %136 ], [ %152, %151 ], [ %167, %166 ], [ %185, %184 ]
br label %116
107: ; preds = %123, %153, %168, %186, %103
%108 = phi i8* [ %120, %123 ], [ %150, %153 ], [ %165, %168 ], [ %183, %186 ], [ %7, %103 ]
%109 = phi i32 [ %124, %123 ], [ %154, %153 ], [ %169, %168 ], [ %187, %186 ], [ 0, %103 ]
br label %131
110: ; preds = %125, %140, %170, %188, %103
%111 = phi i8* [ %135, %140 ], [ %165, %170 ], [ %183, %188 ], [ %120, %125 ], [ %7, %103 ]
%112 = phi i32 [ %141, %140 ], [ %171, %170 ], [ %189, %188 ], [ %126, %125 ], [ 0, %103 ]
br label %146
113: ; preds = %127, %142, %157, %190, %103
%114 = phi i8* [ %150, %157 ], [ %183, %190 ], [ %135, %142 ], [ %120, %127 ], [ %7, %103 ]
%115 = phi i32 [ %158, %157 ], [ %191, %190 ], [ %143, %142 ], [ %128, %127 ], [ 0, %103 ]
br label %161
116: ; preds = %104, %121
%117 = phi i8* [ %120, %121 ], [ %105, %104 ]
%118 = phi i32 [ %122, %121 ], [ %106, %104 ]
%119 = load i8, i8* %117
%120 = getelementptr inbounds i8, i8* %117, i64 1
switch i8 %119, label %212 [
i8 65, label %121
i8 84, label %123
i8 71, label %125
i8 67, label %127
i8 78, label %129
i8 0, label %194
]
121: ; preds = %116
%122 = add nsw i32 %118, 1900
br label %116
123: ; preds = %116
%124 = add nsw i32 %118, 1500
br label %107
125: ; preds = %116
%126 = add nsw i32 %118, 1600
br label %110
127: ; preds = %116
%128 = add nsw i32 %118, 1300
br label %113
129: ; preds = %116
%130 = add nsw i32 %118, 1575
br label %176
131: ; preds = %107, %138
%132 = phi i8* [ %135, %138 ], [ %108, %107 ]
%133 = phi i32 [ %139, %138 ], [ %109, %107 ]
%134 = load i8, i8* %132
%135 = getelementptr inbounds i8, i8* %132, i64 1
switch i8 %134, label %212 [
i8 65, label %136
i8 84, label %138
i8 71, label %140
i8 67, label %142
i8 78, label %144
i8 0, label %194
]
136: ; preds = %131
%137 = add nsw i32 %133, 900
br label %104
138: ; preds = %131
%139 = add nsw i32 %133, 1900
br label %131
140: ; preds = %131
%141 = add nsw i32 %133, 1900
br label %110
142: ; preds = %131
%143 = add nsw i32 %133, 1600
br label %113
144: ; preds = %131
%145 = add nsw i32 %133, 1575
br label %176
146: ; preds = %110, %155
%147 = phi i8* [ %150, %155 ], [ %111, %110 ]
%148 = phi i32 [ %156, %155 ], [ %112, %110 ]
%149 = load i8, i8* %147
%150 = getelementptr inbounds i8, i8* %147, i64 1
switch i8 %149, label %212 [
i8 65, label %151
i8 84, label %153
i8 71, label %155
i8 67, label %157
i8 78, label %159
i8 0, label %194
]
151: ; preds = %146
%152 = add nsw i32 %148, 1600
br label %104
153: ; preds = %146
%154 = add nsw i32 %148, 1300
br label %107
155: ; preds = %146
%156 = add nsw i32 %148, 3100
br label %146
157: ; preds = %146
%158 = add nsw i32 %148, 3100
br label %113
159: ; preds = %146
%160 = add nsw i32 %148, 2275
br label %176
161: ; preds = %113, %172
%162 = phi i8* [ %165, %172 ], [ %114, %113 ]
%163 = phi i32 [ %173, %172 ], [ %115, %113 ]
%164 = load i8, i8* %162
%165 = getelementptr inbounds i8, i8* %162, i64 1
switch i8 %164, label %212 [
i8 65, label %166
i8 84, label %168
i8 71, label %170
i8 67, label %172
i8 78, label %174
i8 0, label %194
]
166: ; preds = %161
%167 = add nsw i32 %163, 1900
br label %104
168: ; preds = %161
%169 = add nsw i32 %163, 1600
br label %107
170: ; preds = %161
%171 = add nsw i32 %163, 3600
br label %110
172: ; preds = %161
%173 = add nsw i32 %163, 3100
br label %161
174: ; preds = %161
%175 = add nsw i32 %163, 2550
br label %176
176: ; preds = %129, %144, %159, %174, %103
%177 = phi i8* [ %165, %174 ], [ %150, %159 ], [ %135, %144 ], [ %120, %129 ], [ %7, %103 ]
%178 = phi i32 [ %175, %174 ], [ %160, %159 ], [ %145, %144 ], [ %130, %129 ], [ 0, %103 ]
br label %179
179: ; preds = %176, %192
%180 = phi i8* [ %183, %192 ], [ %177, %176 ]
%181 = phi i32 [ %193, %192 ], [ %178, %176 ]
%182 = load i8, i8* %180
%183 = getelementptr inbounds i8, i8* %180, i64 1
switch i8 %182, label %212 [
i8 65, label %184
i8 84, label %186
i8 71, label %188
i8 67, label %190
i8 78, label %192
i8 0, label %194
]
184: ; preds = %179
%185 = add nsw i32 %181, 1575
br label %104
186: ; preds = %179
%187 = add nsw i32 %181, 1575
br label %107
188: ; preds = %179
%189 = add nsw i32 %181, 2550
br label %110
190: ; preds = %179
%191 = add nsw i32 %181, 2275
br label %113
192: ; preds = %179
%193 = add nsw i32 %181, 1994
br label %179
194: ; preds = %25, %40, %55, %70, %88, %116, %131, %146, %161, %179
%195 = phi i8* [ %183, %179 ], [ %165, %161 ], [ %150, %146 ], [ %135, %131 ], [ %120, %116 ], [ %92, %88 ], [ %74, %70 ], [ %59, %55 ], [ %44, %40 ], [ %29, %25 ]
%196 = phi i32 [ %181, %179 ], [ %163, %161 ], [ %148, %146 ], [ %133, %131 ], [ %118, %116 ], [ %90, %88 ], [ %72, %70 ], [ %57, %55 ], [ %42, %40 ], [ %27, %25 ]
br i1 %3, label %208, label %197
197: ; preds = %194
%198 = getelementptr inbounds i8, i8* %195, i64 -2
%199 = load i8, i8* %198
switch i8 %199, label %202 [
i8 84, label %200
i8 65, label %200
]
200: ; preds = %197, %197
%201 = add nsw i32 %196, -50
br label %202
202: ; preds = %197, %200
%203 = phi i32 [ %201, %200 ], [ %196, %197 ]
%204 = tail call i32 (i8*, ...) bitcast (i32 (...)* @symmetry to i32 (i8*, ...)*)(i8* %198)
%205 = icmp eq i32 %204, 1
%206 = add nsw i32 %203, -430
%207 = select i1 %205, i32 %206, i32 %203
br label %208
208: ; preds = %202, %194
%209 = phi i32 [ %207, %202 ], [ %196, %194 ]
%210 = sitofp i32 %209 to double
%211 = fdiv double %210, 1.000000e+03
br label %212
212: ; preds = %25, %40, %55, %70, %88, %116, %131, %146, %161, %179, %8, %103, %2, %208
%213 = phi double [ %211, %208 ], [ 0xC12E847FFFF2E48F, %2 ], [ 0xC12E847FFFF2E48F, %103 ], [ 0xC12E847FFFF2E48F, %8 ], [ 0xC12E847FFFF2E48F, %179 ], [ 0xC12E847FFFF2E48F, %161 ], [ 0xC12E847FFFF2E48F, %146 ], [ 0xC12E847FFFF2E48F, %131 ], [ 0xC12E847FFFF2E48F, %116 ], [ 0xC12E847FFFF2E48F, %88 ], [ 0xC12E847FFFF2E48F, %70 ], [ 0xC12E847FFFF2E48F, %55 ], [ 0xC12E847FFFF2E48F, %40 ], [ 0xC12E847FFFF2E48F, %25 ]
ret double %213
}