#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ sprintf(char *, char *, char const);
int /*<<< orphan*/ strcmp(char const *, char *);
int /*<<< orphan*/ strcpy(char *, char *);
int /*<<< orphan*/ trace(int, char *, double, int, char const *, char *);
void convcode(double ver, int sys, const char *str, char *type) {
  strcpy(type, "   ");
  if (!strcmp(str, "P1")) {
    if (sys == 0x01)
      sprintf(type, "%c1W", 'C');
    else if (sys == 0x04)
      sprintf(type, "%c1P", 'C');
  } else if (!strcmp(str, "P2")) {
    if (sys == 0x01)
      sprintf(type, "%c2W", 'C');
    else if (sys == 0x04)
      sprintf(type, "%c2P", 'C');
  } else if (!strcmp(str, "C1")) {
    if (sys == 0x01)
      sprintf(type, "%c1C", 'C');
    else if (sys == 0x04)
      sprintf(type, "%c1C", 'C');
    else if (sys == 0x10)
      sprintf(type, "%c1C", 'C');
    else if (sys == 0x02)
      sprintf(type, "%c1C", 'C');
  } else if (!strcmp(str, "C2")) {
    if (sys == 0x01)
      sprintf(type, "%c2X", 'C');
    else if (sys == 0x04)
      sprintf(type, "%c2C", 'C');
    else if (sys == 0x10)
      sprintf(type, "%c2X", 'C');
  } else if (ver >= 2.12 && str[1] == 'A') {
    if (sys == 0x01)
      sprintf(type, "%c1C", str[0]);
    else if (sys == 0x04)
      sprintf(type, "%c1C", str[0]);
    else if (sys == 0x10)
      sprintf(type, "%c1C", str[0]);
    else if (sys == 0x02)
      sprintf(type, "%c1C", str[0]);
  } else if (ver >= 2.12 && str[1] == 'B') {
    if (sys == 0x01)
      sprintf(type, "%c1X", str[0]);
    else if (sys == 0x10)
      sprintf(type, "%c1X", str[0]);
  } else if (ver >= 2.12 && str[1] == 'C') {
    if (sys == 0x01)
      sprintf(type, "%c2X", str[0]);
    else if (sys == 0x10)
      sprintf(type, "%c2X", str[0]);
  } else if (ver >= 2.12 && str[1] == 'D') {
    if (sys == 0x04)
      sprintf(type, "%c2C", str[0]);
  } else if (ver >= 2.12 && str[1] == '1') {
    if (sys == 0x01)
      sprintf(type, "%c1W", str[0]);
    else if (sys == 0x04)
      sprintf(type, "%c1P", str[0]);
    else if (sys == 0x08)
      sprintf(type, "%c1X", str[0]);
  } else if (ver < 2.12 && str[1] == '1') {
    if (sys == 0x01)
      sprintf(type, "%c1C", str[0]);
    else if (sys == 0x04)
      sprintf(type, "%c1C", str[0]);
    else if (sys == 0x08)
      sprintf(type, "%c1X", str[0]);
    else if (sys == 0x10)
      sprintf(type, "%c1C", str[0]);
    else if (sys == 0x02)
      sprintf(type, "%c1C", str[0]);
  } else if (str[1] == '2') {
    if (sys == 0x01)
      sprintf(type, "%c2W", str[0]);
    else if (sys == 0x04)
      sprintf(type, "%c2P", str[0]);
    else if (sys == 0x10)
      sprintf(type, "%c2X", str[0]);
    else if (sys == 0x20)
      sprintf(type, "%c2C", str[0]);
  } else if (str[1] == '5') {
    if (sys == 0x01)
      sprintf(type, "%c5X", str[0]);
    else if (sys == 0x08)
      sprintf(type, "%c5X", str[0]);
    else if (sys == 0x10)
      sprintf(type, "%c5X", str[0]);
    else if (sys == 0x02)
      sprintf(type, "%c5X", str[0]);
    else if (sys == 0x20)
      sprintf(type, "%c5X", str[0]);
  } else if (str[1] == '6') {
    if (sys == 0x08)
      sprintf(type, "%c6X", str[0]);
    else if (sys == 0x10)
      sprintf(type, "%c6X", str[0]);
    else if (sys == 0x20)
      sprintf(type, "%c6X", str[0]);
  } else if (str[1] == '7') {
    if (sys == 0x08)
      sprintf(type, "%c7X", str[0]);
    else if (sys == 0x20)
      sprintf(type, "%c7X", str[0]);
  } else if (str[1] == '8') {
    if (sys == 0x08)
      sprintf(type, "%c8X", str[0]);
  }
  trace(3, "convcode: ver=%.2f sys=%2d type= %s -> %s\n", ver, sys, str, type);
}


x86 assembly (clang, -O0):
<convcode>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movsd  %xmm0,-0x8(%rbp)
mov    %edi,-0xc(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    -0x20(%rbp),%rdi
lea    0xea5(%rip),%rsi
call   1030 <strcpy@plt>
mov    -0x18(%rbp),%rdi
lea    0xe99(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    11ce <convcode+0x8e>
cmpl   $0x1,-0xc(%rbp)
jne    11a5 <convcode+0x65>
mov    -0x20(%rbp),%rdi
lea    0xe79(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    11c9 <convcode+0x89>
cmpl   $0x4,-0xc(%rbp)
jne    11c4 <convcode+0x84>
mov    -0x20(%rbp),%rdi
lea    0xe5a(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    11c9 <convcode+0x89>
jmp    1a2b <convcode+0x8eb>
mov    -0x18(%rbp),%rdi
lea    0xe40(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1234 <convcode+0xf4>
cmpl   $0x1,-0xc(%rbp)
jne    120b <convcode+0xcb>
mov    -0x20(%rbp),%rdi
lea    0xe20(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    122f <convcode+0xef>
cmpl   $0x4,-0xc(%rbp)
jne    122a <convcode+0xea>
mov    -0x20(%rbp),%rdi
lea    0xe01(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    122f <convcode+0xef>
jmp    1a26 <convcode+0x8e6>
mov    -0x18(%rbp),%rdi
lea    0xde7(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    12ec <convcode+0x1ac>
cmpl   $0x1,-0xc(%rbp)
jne    1271 <convcode+0x131>
mov    -0x20(%rbp),%rdi
lea    0xdc7(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    12e7 <convcode+0x1a7>
cmpl   $0x4,-0xc(%rbp)
jne    1295 <convcode+0x155>
mov    -0x20(%rbp),%rdi
lea    0xda3(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    12e2 <convcode+0x1a2>
cmpl   $0x10,-0xc(%rbp)
jne    12b9 <convcode+0x179>
mov    -0x20(%rbp),%rdi
lea    0xd7f(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    12dd <convcode+0x19d>
cmpl   $0x2,-0xc(%rbp)
jne    12d8 <convcode+0x198>
mov    -0x20(%rbp),%rdi
lea    0xd5b(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    12dd <convcode+0x19d>
jmp    12e2 <convcode+0x1a2>
jmp    12e7 <convcode+0x1a7>
jmp    1a21 <convcode+0x8e1>
mov    -0x18(%rbp),%rdi
lea    0xd37(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    137b <convcode+0x23b>
cmpl   $0x1,-0xc(%rbp)
jne    1329 <convcode+0x1e9>
mov    -0x20(%rbp),%rdi
lea    0xd17(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    1376 <convcode+0x236>
cmpl   $0x4,-0xc(%rbp)
jne    134d <convcode+0x20d>
mov    -0x20(%rbp),%rdi
lea    0xcf8(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    1371 <convcode+0x231>
cmpl   $0x10,-0xc(%rbp)
jne    136c <convcode+0x22c>
mov    -0x20(%rbp),%rdi
lea    0xccf(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    1371 <convcode+0x231>
jmp    1376 <convcode+0x236>
jmp    1a1c <convcode+0x8dc>
movsd  -0x8(%rbp),%xmm0
movsd  0xc78(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     144a <convcode+0x30a>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x41,%eax
jne    144a <convcode+0x30a>
cmpl   $0x1,-0xc(%rbp)
jne    13c9 <convcode+0x289>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xc6d(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1445 <convcode+0x305>
cmpl   $0x4,-0xc(%rbp)
jne    13ef <convcode+0x2af>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xc47(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1440 <convcode+0x300>
cmpl   $0x10,-0xc(%rbp)
jne    1415 <convcode+0x2d5>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xc21(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    143b <convcode+0x2fb>
cmpl   $0x2,-0xc(%rbp)
jne    1436 <convcode+0x2f6>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xbfb(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    143b <convcode+0x2fb>
jmp    1440 <convcode+0x300>
jmp    1445 <convcode+0x305>
jmp    1a17 <convcode+0x8d7>
movsd  -0x8(%rbp),%xmm0
movsd  0xba9(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     14c3 <convcode+0x383>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x42,%eax
jne    14c3 <convcode+0x383>
cmpl   $0x1,-0xc(%rbp)
jne    1498 <convcode+0x358>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xbb0(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    14be <convcode+0x37e>
cmpl   $0x10,-0xc(%rbp)
jne    14b9 <convcode+0x379>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xb8a(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    14be <convcode+0x37e>
jmp    1a12 <convcode+0x8d2>
movsd  -0x8(%rbp),%xmm0
movsd  0xb30(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     153c <convcode+0x3fc>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x43,%eax
jne    153c <convcode+0x3fc>
cmpl   $0x1,-0xc(%rbp)
jne    1511 <convcode+0x3d1>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xb2d(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1537 <convcode+0x3f7>
cmpl   $0x10,-0xc(%rbp)
jne    1532 <convcode+0x3f2>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xb07(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1537 <convcode+0x3f7>
jmp    1a0d <convcode+0x8cd>
movsd  -0x8(%rbp),%xmm0
movsd  0xab7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     158a <convcode+0x44a>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x44,%eax
jne    158a <convcode+0x44a>
cmpl   $0x4,-0xc(%rbp)
jne    1585 <convcode+0x445>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xab9(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1a08 <convcode+0x8c8>
movsd  -0x8(%rbp),%xmm0
movsd  0xa69(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     162e <convcode+0x4ee>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x31,%eax
jne    162e <convcode+0x4ee>
cmpl   $0x1,-0xc(%rbp)
jne    15d8 <convcode+0x498>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xa44(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1629 <convcode+0x4e9>
cmpl   $0x4,-0xc(%rbp)
jne    15fe <convcode+0x4be>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xa23(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1624 <convcode+0x4e4>
cmpl   $0x8,-0xc(%rbp)
jne    161f <convcode+0x4df>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xa24(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1624 <convcode+0x4e4>
jmp    1629 <convcode+0x4e9>
jmp    1a03 <convcode+0x8c3>
movsd  0x9ca(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
jbe    1724 <convcode+0x5e4>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x31,%eax
jne    1724 <convcode+0x5e4>
cmpl   $0x1,-0xc(%rbp)
jne    1678 <convcode+0x538>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x9be(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    171f <convcode+0x5df>
cmpl   $0x4,-0xc(%rbp)
jne    169e <convcode+0x55e>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x998(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    171a <convcode+0x5da>
cmpl   $0x8,-0xc(%rbp)
jne    16c4 <convcode+0x584>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x984(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1715 <convcode+0x5d5>
cmpl   $0x10,-0xc(%rbp)
jne    16ea <convcode+0x5aa>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x94c(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1710 <convcode+0x5d0>
cmpl   $0x2,-0xc(%rbp)
jne    170b <convcode+0x5cb>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x926(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1710 <convcode+0x5d0>
jmp    1715 <convcode+0x5d5>
jmp    171a <convcode+0x5da>
jmp    171f <convcode+0x5df>
jmp    19fe <convcode+0x8be>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x32,%eax
jne    17dc <convcode+0x69c>
cmpl   $0x1,-0xc(%rbp)
jne    175b <convcode+0x61b>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x8ce(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    17d7 <convcode+0x697>
cmpl   $0x4,-0xc(%rbp)
jne    1781 <convcode+0x641>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x8ad(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    17d2 <convcode+0x692>
cmpl   $0x10,-0xc(%rbp)
jne    17a7 <convcode+0x667>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x897(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    17cd <convcode+0x68d>
cmpl   $0x20,-0xc(%rbp)
jne    17c8 <convcode+0x688>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x876(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    17cd <convcode+0x68d>
jmp    17d2 <convcode+0x692>
jmp    17d7 <convcode+0x697>
jmp    19f9 <convcode+0x8b9>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x35,%eax
jne    18bf <convcode+0x77f>
cmpl   $0x1,-0xc(%rbp)
jne    1813 <convcode+0x6d3>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x83a(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    18ba <convcode+0x77a>
cmpl   $0x8,-0xc(%rbp)
jne    1839 <convcode+0x6f9>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x814(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    18b5 <convcode+0x775>
cmpl   $0x10,-0xc(%rbp)
jne    185f <convcode+0x71f>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x7ee(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    18b0 <convcode+0x770>
cmpl   $0x2,-0xc(%rbp)
jne    1885 <convcode+0x745>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x7c8(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    18ab <convcode+0x76b>
cmpl   $0x20,-0xc(%rbp)
jne    18a6 <convcode+0x766>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x7a2(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    18ab <convcode+0x76b>
jmp    18b0 <convcode+0x770>
jmp    18b5 <convcode+0x775>
jmp    18ba <convcode+0x77a>
jmp    19f4 <convcode+0x8b4>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x36,%eax
jne    194c <convcode+0x80c>
cmpl   $0x8,-0xc(%rbp)
jne    18f6 <convcode+0x7b6>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x75c(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1947 <convcode+0x807>
cmpl   $0x10,-0xc(%rbp)
jne    191c <convcode+0x7dc>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x736(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1942 <convcode+0x802>
cmpl   $0x20,-0xc(%rbp)
jne    193d <convcode+0x7fd>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x710(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1942 <convcode+0x802>
jmp    1947 <convcode+0x807>
jmp    19ef <convcode+0x8af>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x37,%eax
jne    19ae <convcode+0x86e>
cmpl   $0x8,-0xc(%rbp)
jne    1983 <convcode+0x843>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x6d4(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    19a9 <convcode+0x869>
cmpl   $0x20,-0xc(%rbp)
jne    19a4 <convcode+0x864>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x6ae(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    19a9 <convcode+0x869>
jmp    19ea <convcode+0x8aa>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x38,%eax
jne    19e5 <convcode+0x8a5>
cmpl   $0x8,-0xc(%rbp)
jne    19e0 <convcode+0x8a0>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x677(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    19e5 <convcode+0x8a5>
jmp    19ea <convcode+0x8aa>
jmp    19ef <convcode+0x8af>
jmp    19f4 <convcode+0x8b4>
jmp    19f9 <convcode+0x8b9>
jmp    19fe <convcode+0x8be>
jmp    1a03 <convcode+0x8c3>
jmp    1a08 <convcode+0x8c8>
jmp    1a0d <convcode+0x8cd>
jmp    1a12 <convcode+0x8d2>
jmp    1a17 <convcode+0x8d7>
jmp    1a1c <convcode+0x8dc>
jmp    1a21 <convcode+0x8e1>
jmp    1a26 <convcode+0x8e6>
jmp    1a2b <convcode+0x8eb>
movsd  -0x8(%rbp),%xmm0
mov    -0xc(%rbp),%edx
mov    -0x18(%rbp),%rcx
mov    -0x20(%rbp),%r8
mov    $0x3,%edi
lea    0x60d(%rip),%rsi
call   1050 <trace@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<convcode>:
push   %r15
push   %r14
push   %rbx
sub    $0x10,%rsp
mov    %rdx,%r14
mov    %rsi,%rbx
mov    %edi,%r15d
movsd  %xmm0,0x8(%rsp)
lea    0x10d1(%rip),%rsi
mov    %rdx,%rdi
call   1030 <strcpy@plt>
lea    0x10c6(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1213 <convcode+0xd3>
lea    0x10bc(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     122f <convcode+0xef>
lea    0x10b2(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     124b <convcode+0x10b>
lea    0x10a3(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1280 <convcode+0x140>
movsd  0x8(%rsp),%xmm0
ucomisd 0xe2f(%rip),%xmm0
jae    12b2 <convcode+0x172>
movsd  0xe21(%rip),%xmm0
ucomisd 0x8(%rsp),%xmm0
mov    0x1(%rbx),%al
jbe    12fb <convcode+0x1bb>
cmp    $0x31,%al
jne    12fb <convcode+0x1bb>
lea    -0x1(%r15),%eax
cmp    $0xf,%eax
ja     1356 <convcode+0x216>
lea    0xfa6(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cmp    $0x4,%r15d
je     1274 <convcode+0x134>
cmp    $0x1,%r15d
jne    1356 <convcode+0x216>
lea    0x100d(%rip),%rsi
jmp    1349 <convcode+0x209>
cmp    $0x4,%r15d
je     12a6 <convcode+0x166>
cmp    $0x1,%r15d
jne    1356 <convcode+0x216>
lea    0xffe(%rip),%rsi
jmp    1349 <convcode+0x209>
lea    -0x1(%r15),%eax
cmp    $0xf,%eax
ja     1356 <convcode+0x216>
lea    0xf91(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xfe2(%rip),%rsi
jmp    1349 <convcode+0x209>
lea    0xfc1(%rip),%rsi
jmp    1349 <convcode+0x209>
cmp    $0x10,%r15d
je     129a <convcode+0x15a>
cmp    $0x4,%r15d
je     1342 <convcode+0x202>
cmp    $0x1,%r15d
jne    1356 <convcode+0x216>
lea    0xfb8(%rip),%rsi
jmp    1349 <convcode+0x209>
lea    0xf9c(%rip),%rsi
jmp    1349 <convcode+0x209>
mov    0x1(%rbx),%al
add    $0xcf,%al
cmp    $0x13,%al
ja     11d7 <convcode+0x97>
movzbl %al,%eax
lea    0xd3f(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cmp    $0x8,%r15d
je     13b3 <convcode+0x273>
cmp    $0x4,%r15d
je     147b <convcode+0x33b>
cmp    $0x1,%r15d
jne    1356 <convcode+0x216>
movsbl (%rbx),%edx
lea    0xf41(%rip),%rsi
jmp    1491 <convcode+0x351>
lea    -0x32(%rax),%ecx
cmp    $0x5,%cl
ja     1418 <convcode+0x2d8>
movzbl %cl,%ecx
lea    0xd87(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
lea    -0x1(%r15),%eax
cmp    $0x1f,%eax
ja     1356 <convcode+0x216>
lea    0xe06(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsbl (%rbx),%edx
lea    0xf07(%rip),%rsi
jmp    1491 <convcode+0x351>
lea    0xf15(%rip),%rsi
mov    %r14,%rdi
mov    $0x43,%edx
call   1060 <sprintf@plt>
lea    0xf1f(%rip),%rsi
mov    $0x3,%edi
movsd  0x8(%rsp),%xmm0
mov    %r15d,%edx
mov    %rbx,%rcx
mov    %r14,%r8
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %r15
jmp    1050 <trace@plt>
lea    -0x1(%r15),%eax
cmp    $0xf,%eax
ja     1356 <convcode+0x216>
lea    0xcc9(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsbl (%rbx),%edx
lea    0xeaf(%rip),%rsi
jmp    1491 <convcode+0x351>
cmp    $0x10,%r15d
je     13b3 <convcode+0x273>
cmp    $0x1,%r15d
jne    1356 <convcode+0x216>
movsbl (%rbx),%edx
lea    0xea6(%rip),%rsi
jmp    1491 <convcode+0x351>
cmp    $0x10,%r15d
je     13ce <convcode+0x28e>
cmp    $0x1,%r15d
jne    1356 <convcode+0x216>
movsbl (%rbx),%edx
lea    0xe81(%rip),%rsi
jmp    1491 <convcode+0x351>
cmp    $0x4,%r15d
jne    1356 <convcode+0x216>
movsbl (%rbx),%edx
lea    0xe6d(%rip),%rsi
jmp    1491 <convcode+0x351>
cmp    $0x20,%r15d
je     140c <convcode+0x2cc>
cmp    $0x10,%r15d
je     140c <convcode+0x2cc>
cmp    $0x8,%r15d
jne    1356 <convcode+0x216>
movsbl (%rbx),%edx
lea    0xe57(%rip),%rsi
jmp    1491 <convcode+0x351>
cmp    $0x8,%r15d
jne    1356 <convcode+0x216>
cmp    $0x38,%al
jne    1356 <convcode+0x216>
movsbl (%rbx),%edx
lea    0xe43(%rip),%rsi
jmp    1491 <convcode+0x351>
lea    -0x1(%r15),%eax
cmp    $0x1f,%eax
ja     1356 <convcode+0x216>
lea    0xc66(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsbl (%rbx),%edx
lea    0xe0b(%rip),%rsi
jmp    1491 <convcode+0x351>
cmp    $0x20,%r15d
je     146f <convcode+0x32f>
cmp    $0x8,%r15d
jne    1356 <convcode+0x216>
movsbl (%rbx),%edx
lea    0xdf9(%rip),%rsi
jmp    1491 <convcode+0x351>
movsbl (%rbx),%edx
lea    0xdb7(%rip),%rsi
jmp    1491 <convcode+0x351>
movsbl (%rbx),%edx
lea    0xdb8(%rip),%rsi
mov    %r14,%rdi
jmp    1351 <convcode+0x211>

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

LLVM IR (-O2):
@.str = [4 x i8] c" \00"
@.str.1 = [3 x i8] c"P1\00"
@.str.2 = [5 x i8] c"%c1W\00"
@.str.3 = [5 x i8] c"%c1P\00"
@.str.4 = [3 x i8] c"P2\00"
@.str.5 = [5 x i8] c"%c2W\00"
@.str.6 = [5 x i8] c"%c2P\00"
@.str.7 = [3 x i8] c"C1\00"
@.str.8 = [5 x i8] c"%c1C\00"
@.str.9 = [3 x i8] c"C2\00"
@.str.10 = [5 x i8] c"%c2X\00"
@.str.11 = [5 x i8] c"%c2C\00"
@.str.12 = [5 x i8] c"%c1X\00"
@.str.13 = [5 x i8] c"%c5X\00"
@.str.14 = [5 x i8] c"%c6X\00"
@.str.15 = [5 x i8] c"%c7X\00"
@.str.16 = [5 x i8] c"%c8X\00"
@.str.17 = [43 x i8] c"convcode: ver=%.2f sys=%2d type= %s -> %s\0A\00"
define void @convcode(double %0, i32 %1, i8* %2, i8* %3) {
%5 = tail call i32 @strcpy(i8* %3, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
%6 = tail call i32 @strcmp(i8* dereferenceable(1) %2, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
%7 = icmp eq i32 %6, 0
br i1 %7, label %8, label %13
8: ; preds = %4
switch i32 %1, label %166 [
i32 1, label %9
i32 4, label %11
]
9: ; preds = %8
%10 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i8 signext 67)
br label %166
11: ; preds = %8
%12 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8 signext 67)
br label %166
13: ; preds = %4
%14 = tail call i32 @strcmp(i8* dereferenceable(1) %2, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0))
%15 = icmp eq i32 %14, 0
br i1 %15, label %16, label %21
16: ; preds = %13
switch i32 %1, label %166 [
i32 1, label %17
i32 4, label %19
]
17: ; preds = %16
%18 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i8 signext 67)
br label %166
19: ; preds = %16
%20 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i8 signext 67)
br label %166
21: ; preds = %13
%22 = tail call i32 @strcmp(i8* dereferenceable(1) %2, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
%23 = icmp eq i32 %22, 0
br i1 %23, label %24, label %33
24: ; preds = %21
switch i32 %1, label %166 [
i32 1, label %25
i32 4, label %27
i32 16, label %29
i32 2, label %31
]
25: ; preds = %24
%26 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8 signext 67)
br label %166
27: ; preds = %24
%28 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8 signext 67)
br label %166
29: ; preds = %24
%30 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8 signext 67)
br label %166
31: ; preds = %24
%32 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8 signext 67)
br label %166
33: ; preds = %21
%34 = tail call i32 @strcmp(i8* dereferenceable(1) %2, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0))
%35 = icmp eq i32 %34, 0
br i1 %35, label %36, label %43
36: ; preds = %33
switch i32 %1, label %166 [
i32 1, label %37
i32 4, label %39
i32 16, label %41
]
37: ; preds = %36
%38 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8 signext 67)
br label %166
39: ; preds = %36
%40 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i8 signext 67)
br label %166
41: ; preds = %36
%42 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8 signext 67)
br label %166
43: ; preds = %33
%44 = fcmp ult double %0, 2.120000e+00
br i1 %44, label %90, label %45
45: ; preds = %43
%46 = getelementptr inbounds i8, i8* %2, i64 1
%47 = load i8, i8* %46
switch i8 %47, label %90 [
i8 65, label %48
i8 66, label %61
i8 67, label %68
i8 68, label %75
i8 49, label %80
]
48: ; preds = %45
switch i32 %1, label %166 [
i32 1, label %49
i32 4, label %52
i32 16, label %55
i32 2, label %58
]
49: ; preds = %48
%50 = load i8, i8* %2
%51 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8 signext %50)
br label %166
52: ; preds = %48
%53 = load i8, i8* %2
%54 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8 signext %53)
br label %166
55: ; preds = %48
%56 = load i8, i8* %2
%57 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8 signext %56)
br label %166
58: ; preds = %48
%59 = load i8, i8* %2
%60 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8 signext %59)
br label %166
61: ; preds = %45
switch i32 %1, label %166 [
i32 1, label %62
i32 16, label %65
]
62: ; preds = %61
%63 = load i8, i8* %2
%64 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0), i8 signext %63)
br label %166
65: ; preds = %61
%66 = load i8, i8* %2
%67 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0), i8 signext %66)
br label %166
68: ; preds = %45
switch i32 %1, label %166 [
i32 1, label %69
i32 16, label %72
]
69: ; preds = %68
%70 = load i8, i8* %2
%71 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8 signext %70)
br label %166
72: ; preds = %68
%73 = load i8, i8* %2
%74 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8 signext %73)
br label %166
75: ; preds = %45
%76 = icmp eq i32 %1, 4
br i1 %76, label %77, label %166
77: ; preds = %75
%78 = load i8, i8* %2
%79 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i8 signext %78)
br label %166
80: ; preds = %45
switch i32 %1, label %166 [
i32 1, label %81
i32 4, label %84
i32 8, label %87
]
81: ; preds = %80
%82 = load i8, i8* %2
%83 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i8 signext %82)
br label %166
84: ; preds = %80
%85 = load i8, i8* %2
%86 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8 signext %85)
br label %166
87: ; preds = %80
%88 = load i8, i8* %2
%89 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0), i8 signext %88)
br label %166
90: ; preds = %45, %43
%91 = fcmp olt double %0, 2.120000e+00
%92 = getelementptr inbounds i8, i8* %2, i64 1
%93 = load i8, i8* %92
%94 = icmp eq i8 %93, 49
%95 = select i1 %91, i1 %94, i1 false
br i1 %95, label %96, label %112
96: ; preds = %90
switch i32 %1, label %166 [
i32 1, label %97
i32 4, label %100
i32 8, label %103
i32 16, label %106
i32 2, label %109
]
97: ; preds = %96
%98 = load i8, i8* %2
%99 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8 signext %98)
br label %166
100: ; preds = %96
%101 = load i8, i8* %2
%102 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8 signext %101)
br label %166
103: ; preds = %96
%104 = load i8, i8* %2
%105 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.12, i64 0, i64 0), i8 signext %104)
br label %166
106: ; preds = %96
%107 = load i8, i8* %2
%108 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8 signext %107)
br label %166
109: ; preds = %96
%110 = load i8, i8* %2
%111 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i8 signext %110)
br label %166
112: ; preds = %90
switch i8 %93, label %159 [
i8 50, label %113
i8 53, label %126
i8 54, label %142
i8 55, label %152
]
113: ; preds = %112
switch i32 %1, label %166 [
i32 1, label %114
i32 4, label %117
i32 16, label %120
i32 32, label %123
]
114: ; preds = %113
%115 = load i8, i8* %2
%116 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i8 signext %115)
br label %166
117: ; preds = %113
%118 = load i8, i8* %2
%119 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i8 signext %118)
br label %166
120: ; preds = %113
%121 = load i8, i8* %2
%122 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8 signext %121)
br label %166
123: ; preds = %113
%124 = load i8, i8* %2
%125 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i8 signext %124)
br label %166
126: ; preds = %112
switch i32 %1, label %166 [
i32 1, label %127
i32 8, label %130
i32 16, label %133
i32 2, label %136
i32 32, label %139
]
127: ; preds = %126
%128 = load i8, i8* %2
%129 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), i8 signext %128)
br label %166
130: ; preds = %126
%131 = load i8, i8* %2
%132 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), i8 signext %131)
br label %166
133: ; preds = %126
%134 = load i8, i8* %2
%135 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), i8 signext %134)
br label %166
136: ; preds = %126
%137 = load i8, i8* %2
%138 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), i8 signext %137)
br label %166
139: ; preds = %126
%140 = load i8, i8* %2
%141 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), i8 signext %140)
br label %166
142: ; preds = %112
switch i32 %1, label %166 [
i32 8, label %143
i32 16, label %146
i32 32, label %149
]
143: ; preds = %142
%144 = load i8, i8* %2
%145 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i8 signext %144)
br label %166
146: ; preds = %142
%147 = load i8, i8* %2
%148 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i8 signext %147)
br label %166
149: ; preds = %142
%150 = load i8, i8* %2
%151 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i8 signext %150)
br label %166
152: ; preds = %112
switch i32 %1, label %166 [
i32 8, label %153
i32 32, label %156
]
153: ; preds = %152
%154 = load i8, i8* %2
%155 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i64 0, i64 0), i8 signext %154)
br label %166
156: ; preds = %152
%157 = load i8, i8* %2
%158 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i64 0, i64 0), i8 signext %157)
br label %166
159: ; preds = %112
%160 = icmp eq i8 %93, 56
%161 = icmp eq i32 %1, 8
%162 = and i1 %161, %160
br i1 %162, label %163, label %166
163: ; preds = %159
%164 = load i8, i8* %2
%165 = tail call i32 @sprintf(i8* dereferenceable(1) %3, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.16, i64 0, i64 0), i8 signext %164)
br label %166
166: ; preds = %152, %142, %126, %113, %96, %80, %68, %61, %48, %36, %24, %16, %8, %19, %17, %39, %41, %37, %65, %62, %77, %75, %100, %106, %109, %103, %97, %130, %136, %139, %133, %127, %156, %153, %163, %159, %143, %149, %146, %114, %120, %123, %117, %81, %87, %84, %69, %72, %49, %55, %58, %52, %25, %29, %31, %27, %9, %11
%167 = tail call i32 @trace(i32 3, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.17, i64 0, i64 0), double %0, i32 %1, i8* %2, i8* %3)
ret void
}