#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 (ver >= 2.12)
      ;
    else if (sys == 0x01)
      sprintf(type, "%c1C", 'C');
    else if (sys == 0x04)
      sprintf(type, "%c1C", 'C');
    else if (sys == 0x08)
      sprintf(type, "%c1X", '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) {
      if (ver >= 2.12)
        sprintf(type, "%c2W", 'C');
      else
        sprintf(type, "%c2X", 'C');
    } else if (sys == 0x04)
      sprintf(type, "%c2C", 'C');
    else if (sys == 0x10)
      sprintf(type, "%c2X", 'C');
    else if (sys == 0x20)
      sprintf(type, "%c1X", '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 (sys == 0x20)
      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, "%c1X", 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 (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    1acf <convcode+0x98f>
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    1aca <convcode+0x98a>
mov    -0x18(%rbp),%rdi
lea    0xde7(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1336 <convcode+0x1f6>
movsd  -0x8(%rbp),%xmm0
movsd  0xda6(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1269 <convcode+0x129>
jmp    1331 <convcode+0x1f1>
cmpl   $0x1,-0xc(%rbp)
jne    128d <convcode+0x14d>
mov    -0x20(%rbp),%rdi
lea    0xdab(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    132c <convcode+0x1ec>
cmpl   $0x4,-0xc(%rbp)
jne    12b1 <convcode+0x171>
mov    -0x20(%rbp),%rdi
lea    0xd87(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    1327 <convcode+0x1e7>
cmpl   $0x8,-0xc(%rbp)
jne    12d5 <convcode+0x195>
mov    -0x20(%rbp),%rdi
lea    0xd68(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    1322 <convcode+0x1e2>
cmpl   $0x10,-0xc(%rbp)
jne    12f9 <convcode+0x1b9>
mov    -0x20(%rbp),%rdi
lea    0xd3f(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    131d <convcode+0x1dd>
cmpl   $0x2,-0xc(%rbp)
jne    1318 <convcode+0x1d8>
mov    -0x20(%rbp),%rdi
lea    0xd1b(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    131d <convcode+0x1dd>
jmp    1322 <convcode+0x1e2>
jmp    1327 <convcode+0x1e7>
jmp    132c <convcode+0x1ec>
jmp    1331 <convcode+0x1f1>
jmp    1ac5 <convcode+0x985>
mov    -0x18(%rbp),%rdi
lea    0xcf2(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    141f <convcode+0x2df>
cmpl   $0x1,-0xc(%rbp)
jne    13a4 <convcode+0x264>
movsd  -0x8(%rbp),%xmm0
movsd  0xc9a(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     138a <convcode+0x24a>
mov    -0x20(%rbp),%rdi
lea    0xca1(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    139f <convcode+0x25f>
mov    -0x20(%rbp),%rdi
lea    0xca1(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    141a <convcode+0x2da>
cmpl   $0x4,-0xc(%rbp)
jne    13c8 <convcode+0x288>
mov    -0x20(%rbp),%rdi
lea    0xc82(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    1415 <convcode+0x2d5>
cmpl   $0x10,-0xc(%rbp)
jne    13ec <convcode+0x2ac>
mov    -0x20(%rbp),%rdi
lea    0xc59(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    1410 <convcode+0x2d0>
cmpl   $0x20,-0xc(%rbp)
jne    140b <convcode+0x2cb>
mov    -0x20(%rbp),%rdi
lea    0xc2d(%rip),%rsi
mov    $0x43,%edx
call   1060 <sprintf@plt>
jmp    1410 <convcode+0x2d0>
jmp    1415 <convcode+0x2d5>
jmp    141a <convcode+0x2da>
jmp    1ac0 <convcode+0x980>
movsd  -0x8(%rbp),%xmm0
movsd  0xbd4(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     14ee <convcode+0x3ae>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x41,%eax
jne    14ee <convcode+0x3ae>
cmpl   $0x1,-0xc(%rbp)
jne    146d <convcode+0x32d>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xbc9(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    14e9 <convcode+0x3a9>
cmpl   $0x4,-0xc(%rbp)
jne    1493 <convcode+0x353>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xba3(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    14e4 <convcode+0x3a4>
cmpl   $0x10,-0xc(%rbp)
jne    14b9 <convcode+0x379>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xb7d(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    14df <convcode+0x39f>
cmpl   $0x2,-0xc(%rbp)
jne    14da <convcode+0x39a>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xb57(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    14df <convcode+0x39f>
jmp    14e4 <convcode+0x3a4>
jmp    14e9 <convcode+0x3a9>
jmp    1abb <convcode+0x97b>
movsd  -0x8(%rbp),%xmm0
movsd  0xb05(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1567 <convcode+0x427>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x42,%eax
jne    1567 <convcode+0x427>
cmpl   $0x1,-0xc(%rbp)
jne    153c <convcode+0x3fc>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xaff(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1562 <convcode+0x422>
cmpl   $0x10,-0xc(%rbp)
jne    155d <convcode+0x41d>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xad9(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1562 <convcode+0x422>
jmp    1ab6 <convcode+0x976>
movsd  -0x8(%rbp),%xmm0
movsd  0xa8c(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     15e0 <convcode+0x4a0>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x43,%eax
jne    15e0 <convcode+0x4a0>
cmpl   $0x1,-0xc(%rbp)
jne    15b5 <convcode+0x475>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xa8e(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    15db <convcode+0x49b>
cmpl   $0x10,-0xc(%rbp)
jne    15d6 <convcode+0x496>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xa68(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    15db <convcode+0x49b>
jmp    1ab1 <convcode+0x971>
movsd  -0x8(%rbp),%xmm0
movsd  0xa13(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     162e <convcode+0x4ee>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x44,%eax
jne    162e <convcode+0x4ee>
cmpl   $0x4,-0xc(%rbp)
jne    1629 <convcode+0x4e9>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0xa1a(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1aac <convcode+0x96c>
movsd  -0x8(%rbp),%xmm0
movsd  0x9c5(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     16fd <convcode+0x5bd>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x31,%eax
jne    16fd <convcode+0x5bd>
cmpl   $0x1,-0xc(%rbp)
jne    167c <convcode+0x53c>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x9a0(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    16f8 <convcode+0x5b8>
cmpl   $0x4,-0xc(%rbp)
jne    16a2 <convcode+0x562>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x97f(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    16f3 <convcode+0x5b3>
cmpl   $0x8,-0xc(%rbp)
jne    16c8 <convcode+0x588>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x973(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    16ee <convcode+0x5ae>
cmpl   $0x20,-0xc(%rbp)
jne    16e9 <convcode+0x5a9>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x94d(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    16ee <convcode+0x5ae>
jmp    16f3 <convcode+0x5b3>
jmp    16f8 <convcode+0x5b8>
jmp    1aa7 <convcode+0x967>
movsd  0x8fb(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
jbe    17f3 <convcode+0x6b3>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x31,%eax
jne    17f3 <convcode+0x6b3>
cmpl   $0x1,-0xc(%rbp)
jne    1747 <convcode+0x607>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x8ef(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    17ee <convcode+0x6ae>
cmpl   $0x4,-0xc(%rbp)
jne    176d <convcode+0x62d>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x8c9(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    17e9 <convcode+0x6a9>
cmpl   $0x8,-0xc(%rbp)
jne    1793 <convcode+0x653>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x8a8(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    17e4 <convcode+0x6a4>
cmpl   $0x10,-0xc(%rbp)
jne    17b9 <convcode+0x679>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x87d(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    17df <convcode+0x69f>
cmpl   $0x2,-0xc(%rbp)
jne    17da <convcode+0x69a>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x857(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    17df <convcode+0x69f>
jmp    17e4 <convcode+0x6a4>
jmp    17e9 <convcode+0x6a9>
jmp    17ee <convcode+0x6ae>
jmp    1aa2 <convcode+0x962>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x32,%eax
jne    18ab <convcode+0x76b>
cmpl   $0x1,-0xc(%rbp)
jne    182a <convcode+0x6ea>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x7ff(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    18a6 <convcode+0x766>
cmpl   $0x4,-0xc(%rbp)
jne    1850 <convcode+0x710>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x7de(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    18a1 <convcode+0x761>
cmpl   $0x10,-0xc(%rbp)
jne    1876 <convcode+0x736>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x7cd(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    189c <convcode+0x75c>
cmpl   $0x20,-0xc(%rbp)
jne    1897 <convcode+0x757>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x79f(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    189c <convcode+0x75c>
jmp    18a1 <convcode+0x761>
jmp    18a6 <convcode+0x766>
jmp    1a9d <convcode+0x95d>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x35,%eax
jne    1963 <convcode+0x823>
cmpl   $0x1,-0xc(%rbp)
jne    18e2 <convcode+0x7a2>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x76b(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    195e <convcode+0x81e>
cmpl   $0x8,-0xc(%rbp)
jne    1908 <convcode+0x7c8>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x745(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1959 <convcode+0x819>
cmpl   $0x10,-0xc(%rbp)
jne    192e <convcode+0x7ee>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x71f(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1954 <convcode+0x814>
cmpl   $0x2,-0xc(%rbp)
jne    194f <convcode+0x80f>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x6f9(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1954 <convcode+0x814>
jmp    1959 <convcode+0x819>
jmp    195e <convcode+0x81e>
jmp    1a98 <convcode+0x958>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x36,%eax
jne    19f0 <convcode+0x8b0>
cmpl   $0x8,-0xc(%rbp)
jne    199a <convcode+0x85a>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x6b8(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    19eb <convcode+0x8ab>
cmpl   $0x10,-0xc(%rbp)
jne    19c0 <convcode+0x880>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x692(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    19e6 <convcode+0x8a6>
cmpl   $0x20,-0xc(%rbp)
jne    19e1 <convcode+0x8a1>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x66c(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    19e6 <convcode+0x8a6>
jmp    19eb <convcode+0x8ab>
jmp    1a93 <convcode+0x953>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x37,%eax
jne    1a52 <convcode+0x912>
cmpl   $0x8,-0xc(%rbp)
jne    1a27 <convcode+0x8e7>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x630(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1a4d <convcode+0x90d>
cmpl   $0x20,-0xc(%rbp)
jne    1a48 <convcode+0x908>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x60a(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1a4d <convcode+0x90d>
jmp    1a8e <convcode+0x94e>
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x38,%eax
jne    1a89 <convcode+0x949>
cmpl   $0x8,-0xc(%rbp)
jne    1a84 <convcode+0x944>
mov    -0x20(%rbp),%rdi
mov    -0x18(%rbp),%rax
lea    0x5d3(%rip),%rsi
movsbl (%rax),%edx
call   1060 <sprintf@plt>
jmp    1a89 <convcode+0x949>
jmp    1a8e <convcode+0x94e>
jmp    1a93 <convcode+0x953>
jmp    1a98 <convcode+0x958>
jmp    1a9d <convcode+0x95d>
jmp    1aa2 <convcode+0x962>
jmp    1aa7 <convcode+0x967>
jmp    1aac <convcode+0x96c>
jmp    1ab1 <convcode+0x971>
jmp    1ab6 <convcode+0x976>
jmp    1abb <convcode+0x97b>
jmp    1ac0 <convcode+0x980>
jmp    1ac5 <convcode+0x985>
jmp    1aca <convcode+0x98a>
jmp    1acf <convcode+0x98f>
movsd  -0x8(%rbp),%xmm0
mov    -0xc(%rbp),%edx
mov    -0x18(%rbp),%rcx
mov    -0x20(%rbp),%r8
mov    $0x3,%edi
lea    0x569(%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    0x1191(%rip),%rsi
mov    %rdx,%rdi
call   1030 <strcpy@plt>
lea    0x1186(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1213 <convcode+0xd3>
lea    0x117c(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     122f <convcode+0xef>
lea    0x1172(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     124f <convcode+0x10f>
lea    0x1168(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1298 <convcode+0x158>
movsd  0x8(%rsp),%xmm0
ucomisd 0xe2f(%rip),%xmm0
jae    12e1 <convcode+0x1a1>
movsd  0xe21(%rip),%xmm0
ucomisd 0x8(%rsp),%xmm0
mov    0x1(%rbx),%al
jbe    132d <convcode+0x1ed>
cmp    $0x31,%al
jne    132d <convcode+0x1ed>
lea    -0x1(%r15),%eax
cmp    $0xf,%eax
ja     1391 <convcode+0x251>
lea    0xfe6(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cmp    $0x4,%r15d
je     128c <convcode+0x14c>
cmp    $0x1,%r15d
jne    1391 <convcode+0x251>
lea    0x10cd(%rip),%rsi
jmp    1384 <convcode+0x244>
cmp    $0x4,%r15d
je     12d5 <convcode+0x195>
cmp    $0x1,%r15d
jne    1391 <convcode+0x251>
lea    0x10ba(%rip),%rsi
jmp    1384 <convcode+0x244>
movsd  0x8(%rsp),%xmm0
ucomisd 0xda3(%rip),%xmm0
jae    1391 <convcode+0x251>
lea    -0x1(%r15),%eax
cmp    $0xf,%eax
ja     1391 <convcode+0x251>
lea    0x1039(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x108a(%rip),%rsi
jmp    1384 <convcode+0x244>
lea    0x1069(%rip),%rsi
jmp    1384 <convcode+0x244>
lea    -0x1(%r15),%eax
cmp    $0x1f,%eax
ja     1391 <convcode+0x251>
lea    0xf84(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsd  0x8(%rsp),%xmm0
ucomisd 0xd3d(%rip),%xmm0
jae    1243 <convcode+0x103>
lea    0x104e(%rip),%rsi
jmp    1384 <convcode+0x244>
lea    0x102d(%rip),%rsi
jmp    1384 <convcode+0x244>
mov    0x1(%rbx),%al
add    $0xcf,%al
cmp    $0x13,%al
ja     11d7 <convcode+0x97>
movzbl %al,%eax
lea    0xd10(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    -0x1(%r15),%eax
cmp    $0x1f,%eax
ja     1391 <convcode+0x251>
lea    0xd43(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsbl (%rbx),%edx
lea    0xfcf(%rip),%rsi
jmp    14cc <convcode+0x38c>
lea    -0x32(%rax),%ecx
cmp    $0x5,%cl
ja     1453 <convcode+0x313>
movzbl %cl,%ecx
lea    0xdd5(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
lea    -0x1(%r15),%eax
cmp    $0x1f,%eax
ja     1391 <convcode+0x251>
lea    0xe14(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsbl (%rbx),%edx
lea    0xf95(%rip),%rsi
jmp    14cc <convcode+0x38c>
lea    0xf9b(%rip),%rsi
jmp    1384 <convcode+0x244>
lea    0xf9f(%rip),%rsi
mov    %r14,%rdi
mov    $0x43,%edx
call   1060 <sprintf@plt>
lea    0xfa4(%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     1391 <convcode+0x251>
lea    0xd0e(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsbl (%rbx),%edx
lea    0xf34(%rip),%rsi
jmp    14cc <convcode+0x38c>
cmp    $0x10,%r15d
je     13ee <convcode+0x2ae>
cmp    $0x1,%r15d
jne    1391 <convcode+0x251>
movsbl (%rbx),%edx
lea    0xf1e(%rip),%rsi
jmp    14cc <convcode+0x38c>
cmp    $0x10,%r15d
je     1409 <convcode+0x2c9>
cmp    $0x1,%r15d
jne    1391 <convcode+0x251>
movsbl (%rbx),%edx
lea    0xf0b(%rip),%rsi
jmp    14cc <convcode+0x38c>
cmp    $0x4,%r15d
jne    1391 <convcode+0x251>
movsbl (%rbx),%edx
lea    0xef7(%rip),%rsi
jmp    14cc <convcode+0x38c>
cmp    $0x20,%r15d
je     1447 <convcode+0x307>
cmp    $0x10,%r15d
je     1447 <convcode+0x307>
cmp    $0x8,%r15d
jne    1391 <convcode+0x251>
movsbl (%rbx),%edx
lea    0xedc(%rip),%rsi
jmp    14cc <convcode+0x38c>
cmp    $0x8,%r15d
jne    1391 <convcode+0x251>
cmp    $0x38,%al
jne    1391 <convcode+0x251>
movsbl (%rbx),%edx
lea    0xec8(%rip),%rsi
jmp    14cc <convcode+0x38c>
lea    -0x1(%r15),%eax
cmp    $0xf,%eax
ja     1391 <convcode+0x251>
lea    0xcab(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsbl (%rbx),%edx
lea    0xe90(%rip),%rsi
jmp    14cc <convcode+0x38c>
cmp    $0x20,%r15d
je     14aa <convcode+0x36a>
cmp    $0x8,%r15d
jne    1391 <convcode+0x251>
movsbl (%rbx),%edx
lea    0xe7e(%rip),%rsi
jmp    14cc <convcode+0x38c>
movsbl (%rbx),%edx
lea    0xe3c(%rip),%rsi
jmp    14cc <convcode+0x38c>
movsbl (%rbx),%edx
lea    0xe3d(%rip),%rsi
mov    %r14,%rdi
jmp    138c <convcode+0x24c>

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