#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*/ Globals_assert(int, char *);
int /*<<< orphan*/ memset(char *, char, int);
char *replaceWithCanonicalCopulas(char *narsese, int n) {
  static char narsese_replaced[3 * 256];
  memset(narsese_replaced, ' ', 3 * 256);
  Globals_assert(n + 3 <= 256, "NARSESE_LEN_MAX too small, consider increasing "
                               "or split input into multiple statements! \n");
  int j = 0;
  for (int i = 0; i < n;) {
    if (narsese[i] == ',') {
      narsese_replaced[j] = ' ';
      i++;
      j++;
    } else if (narsese[i] == '[') {
      narsese_replaced[j] = '(';
      narsese_replaced[j + 1] = '\'';
      narsese_replaced[j + 2] = ' ';
      i++;
      j += 3;
    } else if (narsese[i] == '{') {
      narsese_replaced[j] = '(';
      narsese_replaced[j + 1] = '"';
      narsese_replaced[j + 2] = ' ';
      i++;
      j += 3;
    } else if (narsese[i] == '}' || narsese[i] == ']' || narsese[i] == '>') {
      narsese_replaced[j] = ')';
      i++;
      j++;
    } else if (narsese[i] == '<' && narsese[i + 1] != '-') {
      narsese_replaced[j] = '(';
      i++;
      j++;
    } else if (i + 1 < n) {
      if (narsese[i] == '&' && narsese[i + 1] == '/') {
        narsese_replaced[j] = '+';
        i += 2;
        j++;
      } else if (narsese[i] == '&' && narsese[i + 1] == '|') {
        narsese_replaced[j] = ';';
        i += 2;
        j++;
      } else if (narsese[i] == '&' && narsese[i + 1] == '&') {
        narsese_replaced[j] = ';';
        i += 2;
        j++;
      } else if (narsese[i] == '/' && narsese[i + 1] == '1') {
        narsese_replaced[j] = '/';
        i += 2;
        j++;
      } else if (narsese[i] == '/' && narsese[i + 1] == '2') {
        narsese_replaced[j] = '%';
        i += 2;
        j++;
      } else if (narsese[i] == '\\' && narsese[i + 1] == '1') {
        narsese_replaced[j] = '\\';
        i += 2;
        j++;
      } else if (narsese[i] == '\\' && narsese[i + 1] == '2') {
        narsese_replaced[j] = '#';
        i += 2;
        j++;
      } else if (i + 2 < n) {
        if (narsese[i] == '-' && narsese[i + 1] == '-' &&
            narsese[i + 2] == '>') {
          narsese_replaced[j] = ':';
          i += 3;
          j++;
        } else if (narsese[i] == '<' && narsese[i + 1] == '-' &&
                   narsese[i + 2] == '>') {
          narsese_replaced[j] = '=';
          i += 3;
          j++;
        } else if (narsese[i] == '=' && narsese[i + 1] == '/' &&
                   narsese[i + 2] == '>') {
          narsese_replaced[j] = '$';
          i += 3;
          j++;
        } else if (narsese[i] == '=' && narsese[i + 1] == '=' &&
                   narsese[i + 2] == '>') {
          narsese_replaced[j] = '$';
          i += 3;
          j++;
        } else if (narsese[i] == '-' && narsese[i + 1] == '-' &&
                   narsese[i + 2] != '>') {
          narsese_replaced[j] = '!';
          i += 3;
          j++;
        } else {
          goto DEFAULT;
        }
      } else {
        goto DEFAULT;
      }
    } else {
      goto DEFAULT;
    }
    continue;
  DEFAULT:
    narsese_replaced[j] = narsese[i];
    i++;
    j++;
  }
  narsese_replaced[j] = 0;
  return narsese_replaced;
}


x86 assembly (clang, -O0):
<replaceWithCanonicalCopulas>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
lea    0x2f0a(%rip),%rdi
mov    $0x20,%esi
mov    $0x300,%edx
call   1030 <memset@plt>
mov    -0xc(%rbp),%eax
add    $0x3,%eax
cmp    $0x100,%eax
setle  %al
and    $0x1,%al
movzbl %al,%edi
lea    0xea1(%rip),%rsi
call   1040 <Globals_assert@plt>
movl   $0x0,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1873 <replaceWithCanonicalCopulas+0x753>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2c,%eax
jne    11b9 <replaceWithCanonicalCopulas+0x99>
movslq -0x10(%rbp),%rcx
lea    0x2ea2(%rip),%rax
movb   $0x20,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    183e <replaceWithCanonicalCopulas+0x71e>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5b,%eax
jne    121c <replaceWithCanonicalCopulas+0xfc>
movslq -0x10(%rbp),%rcx
lea    0x2e67(%rip),%rax
movb   $0x28,(%rax,%rcx,1)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
movslq %eax,%rcx
lea    0x2e53(%rip),%rax
movb   $0x27,(%rax,%rcx,1)
mov    -0x10(%rbp),%eax
add    $0x2,%eax
movslq %eax,%rcx
lea    0x2e3f(%rip),%rax
movb   $0x20,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x10(%rbp)
jmp    1839 <replaceWithCanonicalCopulas+0x719>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7b,%eax
jne    127f <replaceWithCanonicalCopulas+0x15f>
movslq -0x10(%rbp),%rcx
lea    0x2e04(%rip),%rax
movb   $0x28,(%rax,%rcx,1)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
movslq %eax,%rcx
lea    0x2df0(%rip),%rax
movb   $0x22,(%rax,%rcx,1)
mov    -0x10(%rbp),%eax
add    $0x2,%eax
movslq %eax,%rcx
lea    0x2ddc(%rip),%rax
movb   $0x20,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x10(%rbp)
jmp    1834 <replaceWithCanonicalCopulas+0x714>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7d,%eax
je     12be <replaceWithCanonicalCopulas+0x19e>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5d,%eax
je     12be <replaceWithCanonicalCopulas+0x19e>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3e,%eax
jne    12e4 <replaceWithCanonicalCopulas+0x1c4>
movslq -0x10(%rbp),%rcx
lea    0x2d77(%rip),%rax
movb   $0x29,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    182f <replaceWithCanonicalCopulas+0x70f>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3c,%eax
jne    1339 <replaceWithCanonicalCopulas+0x219>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2d,%eax
je     1339 <replaceWithCanonicalCopulas+0x219>
movslq -0x10(%rbp),%rcx
lea    0x2d22(%rip),%rax
movb   $0x28,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    182a <replaceWithCanonicalCopulas+0x70a>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
cmp    -0xc(%rbp),%eax
jge    1820 <replaceWithCanonicalCopulas+0x700>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x26,%eax
jne    139d <replaceWithCanonicalCopulas+0x27d>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2f,%eax
jne    139d <replaceWithCanonicalCopulas+0x27d>
movslq -0x10(%rbp),%rcx
lea    0x2cbe(%rip),%rax
movb   $0x2b,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    181b <replaceWithCanonicalCopulas+0x6fb>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x26,%eax
jne    13f2 <replaceWithCanonicalCopulas+0x2d2>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7c,%eax
jne    13f2 <replaceWithCanonicalCopulas+0x2d2>
movslq -0x10(%rbp),%rcx
lea    0x2c69(%rip),%rax
movb   $0x3b,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1816 <replaceWithCanonicalCopulas+0x6f6>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x26,%eax
jne    1447 <replaceWithCanonicalCopulas+0x327>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x26,%eax
jne    1447 <replaceWithCanonicalCopulas+0x327>
movslq -0x10(%rbp),%rcx
lea    0x2c14(%rip),%rax
movb   $0x3b,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1811 <replaceWithCanonicalCopulas+0x6f1>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2f,%eax
jne    149c <replaceWithCanonicalCopulas+0x37c>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    149c <replaceWithCanonicalCopulas+0x37c>
movslq -0x10(%rbp),%rcx
lea    0x2bbf(%rip),%rax
movb   $0x2f,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    180c <replaceWithCanonicalCopulas+0x6ec>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2f,%eax
jne    14f1 <replaceWithCanonicalCopulas+0x3d1>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x32,%eax
jne    14f1 <replaceWithCanonicalCopulas+0x3d1>
movslq -0x10(%rbp),%rcx
lea    0x2b6a(%rip),%rax
movb   $0x25,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1807 <replaceWithCanonicalCopulas+0x6e7>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5c,%eax
jne    1546 <replaceWithCanonicalCopulas+0x426>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    1546 <replaceWithCanonicalCopulas+0x426>
movslq -0x10(%rbp),%rcx
lea    0x2b15(%rip),%rax
movb   $0x5c,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1802 <replaceWithCanonicalCopulas+0x6e2>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5c,%eax
jne    159b <replaceWithCanonicalCopulas+0x47b>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x32,%eax
jne    159b <replaceWithCanonicalCopulas+0x47b>
movslq -0x10(%rbp),%rcx
lea    0x2ac0(%rip),%rax
movb   $0x23,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    17fd <replaceWithCanonicalCopulas+0x6dd>
mov    -0x14(%rbp),%eax
add    $0x2,%eax
cmp    -0xc(%rbp),%eax
jge    17f3 <replaceWithCanonicalCopulas+0x6d3>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2d,%eax
jne    1619 <replaceWithCanonicalCopulas+0x4f9>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2d,%eax
jne    1619 <replaceWithCanonicalCopulas+0x4f9>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3e,%eax
jne    1619 <replaceWithCanonicalCopulas+0x4f9>
movslq -0x10(%rbp),%rcx
lea    0x2a42(%rip),%rax
movb   $0x3a,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    17ee <replaceWithCanonicalCopulas+0x6ce>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3c,%eax
jne    1688 <replaceWithCanonicalCopulas+0x568>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2d,%eax
jne    1688 <replaceWithCanonicalCopulas+0x568>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3e,%eax
jne    1688 <replaceWithCanonicalCopulas+0x568>
movslq -0x10(%rbp),%rcx
lea    0x29d3(%rip),%rax
movb   $0x3d,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    17e9 <replaceWithCanonicalCopulas+0x6c9>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3d,%eax
jne    16f7 <replaceWithCanonicalCopulas+0x5d7>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2f,%eax
jne    16f7 <replaceWithCanonicalCopulas+0x5d7>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3e,%eax
jne    16f7 <replaceWithCanonicalCopulas+0x5d7>
movslq -0x10(%rbp),%rcx
lea    0x2964(%rip),%rax
movb   $0x24,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    17e4 <replaceWithCanonicalCopulas+0x6c4>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3d,%eax
jne    1766 <replaceWithCanonicalCopulas+0x646>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3d,%eax
jne    1766 <replaceWithCanonicalCopulas+0x646>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3e,%eax
jne    1766 <replaceWithCanonicalCopulas+0x646>
movslq -0x10(%rbp),%rcx
lea    0x28f5(%rip),%rax
movb   $0x24,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    17df <replaceWithCanonicalCopulas+0x6bf>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2d,%eax
jne    17d5 <replaceWithCanonicalCopulas+0x6b5>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2d,%eax
jne    17d5 <replaceWithCanonicalCopulas+0x6b5>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3e,%eax
je     17d5 <replaceWithCanonicalCopulas+0x6b5>
movslq -0x10(%rbp),%rcx
lea    0x2886(%rip),%rax
movb   $0x21,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    17da <replaceWithCanonicalCopulas+0x6ba>
jmp    1843 <replaceWithCanonicalCopulas+0x723>
jmp    17df <replaceWithCanonicalCopulas+0x6bf>
jmp    17e4 <replaceWithCanonicalCopulas+0x6c4>
jmp    17e9 <replaceWithCanonicalCopulas+0x6c9>
jmp    17ee <replaceWithCanonicalCopulas+0x6ce>
jmp    17f8 <replaceWithCanonicalCopulas+0x6d8>
jmp    1843 <replaceWithCanonicalCopulas+0x723>
jmp    17fd <replaceWithCanonicalCopulas+0x6dd>
jmp    1802 <replaceWithCanonicalCopulas+0x6e2>
jmp    1807 <replaceWithCanonicalCopulas+0x6e7>
jmp    180c <replaceWithCanonicalCopulas+0x6ec>
jmp    1811 <replaceWithCanonicalCopulas+0x6f1>
jmp    1816 <replaceWithCanonicalCopulas+0x6f6>
jmp    181b <replaceWithCanonicalCopulas+0x6fb>
jmp    1825 <replaceWithCanonicalCopulas+0x705>
jmp    1843 <replaceWithCanonicalCopulas+0x723>
jmp    182a <replaceWithCanonicalCopulas+0x70a>
jmp    182f <replaceWithCanonicalCopulas+0x70f>
jmp    1834 <replaceWithCanonicalCopulas+0x714>
jmp    1839 <replaceWithCanonicalCopulas+0x719>
jmp    183e <replaceWithCanonicalCopulas+0x71e>
jmp    1172 <replaceWithCanonicalCopulas+0x52>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
movslq -0x10(%rbp),%rcx
lea    0x27e7(%rip),%rax
mov    %dl,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1172 <replaceWithCanonicalCopulas+0x52>
movslq -0x10(%rbp),%rcx
lea    0x27c2(%rip),%rax
movb   $0x0,(%rax,%rcx,1)
lea    0x27b7(%rip),%rax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<replaceWithCanonicalCopulas>:
push   %rbp
push   %r15
push   %r14
push   %rbx
push   %rax
mov    %esi,%ebp
mov    %rdi,%r15
lea    0x2f0d(%rip),%r14
mov    %r14,%rdi
mov    $0x20,%esi
mov    $0x300,%edx
call   1030 <memset@plt>
xor    %edi,%edi
cmp    $0xfe,%ebp
setl   %dil
lea    0xf70(%rip),%rsi
call   1040 <Globals_assert@plt>
xor    %edx,%edx
test   %ebp,%ebp
jle    1393 <replaceWithCanonicalCopulas+0x273>
lea    0xe92(%rip),%r8
xor    %ecx,%ecx
jmp    1197 <replaceWithCanonicalCopulas+0x77>
mov    %ecx,%eax
movw   $0x2728,(%rax,%r14,1)
movb   $0x20,0x2(%rax,%r14,1)
add    $0x1,%edx
mov    $0x3,%eax
mov    %edx,%esi
add    %eax,%ecx
mov    %esi,%edx
cmp    %ebp,%esi
jge    1391 <replaceWithCanonicalCopulas+0x271>
movslq %edx,%rax
movzbl (%r15,%rax,1),%edi
lea    -0x2c(%rdi),%esi
cmp    $0x31,%sil
ja     11c0 <replaceWithCanonicalCopulas+0xa0>
movzbl %sil,%esi
movslq (%r8,%rsi,4),%rsi
add    %r8,%rsi
jmp    *%rsi
mov    %ecx,%eax
movb   $0x20,(%rax,%r14,1)
jmp    11d7 <replaceWithCanonicalCopulas+0xb7>
xchg   %ax,%ax
cmp    $0x7b,%dil
je     1295 <replaceWithCanonicalCopulas+0x175>
cmp    $0x7d,%dil
jne    11e1 <replaceWithCanonicalCopulas+0xc1>
mov    %ecx,%eax
movb   $0x29,(%rax,%r14,1)
add    $0x1,%edx
mov    $0x1,%eax
jmp    1189 <replaceWithCanonicalCopulas+0x69>
lea    0x1(%rax),%rsi
cmp    %ebp,%esi
jge    1372 <replaceWithCanonicalCopulas+0x252>
cmp    $0x5c,%dil
je     12b4 <replaceWithCanonicalCopulas+0x194>
cmp    $0x2f,%dil
je     12dc <replaceWithCanonicalCopulas+0x1bc>
cmp    $0x26,%dil
jne    1246 <replaceWithCanonicalCopulas+0x126>
movzbl (%r15,%rsi,1),%r9d
cmp    $0x26,%r9b
je     1300 <replaceWithCanonicalCopulas+0x1e0>
cmp    $0x7c,%r9b
je     1300 <replaceWithCanonicalCopulas+0x1e0>
cmp    $0x2f,%r9b
jne    1246 <replaceWithCanonicalCopulas+0x126>
mov    %ecx,%eax
movb   $0x2b,(%rax,%r14,1)
add    $0x2,%edx
jmp    11da <replaceWithCanonicalCopulas+0xba>
lea    0x1(%rax),%rsi
cmpb   $0x2d,0x1(%r15,%rax,1)
jne    12a3 <replaceWithCanonicalCopulas+0x183>
cmp    %ebp,%esi
jge    1372 <replaceWithCanonicalCopulas+0x252>
add    $0x2,%rax
cmp    %ebp,%eax
jge    1372 <replaceWithCanonicalCopulas+0x252>
cmp    $0x3d,%dil
je     130f <replaceWithCanonicalCopulas+0x1ef>
cmp    $0x3c,%dil
je     1333 <replaceWithCanonicalCopulas+0x213>
cmp    $0x2d,%dil
jne    1372 <replaceWithCanonicalCopulas+0x252>
movslq %esi,%rbx
cmpb   $0x2d,(%r15,%rbx,1)
jne    1372 <replaceWithCanonicalCopulas+0x252>
cmpb   $0x3e,(%r15,%rax,1)
jne    136b <replaceWithCanonicalCopulas+0x24b>
mov    %ecx,%eax
movb   $0x3a,(%rax,%r14,1)
jmp    1389 <replaceWithCanonicalCopulas+0x269>
mov    %ecx,%eax
movw   $0x2228,(%rax,%r14,1)
jmp    117b <replaceWithCanonicalCopulas+0x5b>
mov    %ecx,%eax
movb   $0x28,(%rax,%r14,1)
mov    $0x1,%eax
jmp    118b <replaceWithCanonicalCopulas+0x6b>
movzbl (%r15,%rsi,1),%r9d
cmp    $0x32,%r9b
je     134d <replaceWithCanonicalCopulas+0x22d>
cmp    $0x31,%r9b
jne    1246 <replaceWithCanonicalCopulas+0x126>
mov    %ecx,%eax
movb   $0x5c,(%rax,%r14,1)
add    $0x2,%edx
jmp    11da <replaceWithCanonicalCopulas+0xba>
movzbl (%r15,%rsi,1),%r9d
cmp    $0x32,%r9b
je     135c <replaceWithCanonicalCopulas+0x23c>
cmp    $0x31,%r9b
jne    1246 <replaceWithCanonicalCopulas+0x126>
mov    %ecx,%eax
movb   $0x2f,(%rax,%r14,1)
add    $0x2,%edx
jmp    11da <replaceWithCanonicalCopulas+0xba>
mov    %ecx,%eax
movb   $0x3b,(%rax,%r14,1)
add    $0x2,%edx
jmp    11da <replaceWithCanonicalCopulas+0xba>
movslq %esi,%rbx
movzbl (%r15,%rbx,1),%r9d
cmp    $0x3d,%r9b
je     1323 <replaceWithCanonicalCopulas+0x203>
cmp    $0x2f,%r9b
jne    1372 <replaceWithCanonicalCopulas+0x252>
cmpb   $0x3e,(%r15,%rax,1)
jne    1372 <replaceWithCanonicalCopulas+0x252>
mov    %ecx,%eax
movb   $0x24,(%rax,%r14,1)
jmp    1389 <replaceWithCanonicalCopulas+0x269>
movslq %esi,%rbx
cmpb   $0x2d,(%r15,%rbx,1)
jne    1372 <replaceWithCanonicalCopulas+0x252>
cmpb   $0x3e,(%r15,%rax,1)
jne    1372 <replaceWithCanonicalCopulas+0x252>
mov    %ecx,%eax
movb   $0x3d,(%rax,%r14,1)
jmp    1389 <replaceWithCanonicalCopulas+0x269>
mov    %ecx,%eax
movb   $0x23,(%rax,%r14,1)
add    $0x2,%edx
jmp    11da <replaceWithCanonicalCopulas+0xba>
mov    %ecx,%eax
movb   $0x25,(%rax,%r14,1)
add    $0x2,%edx
jmp    11da <replaceWithCanonicalCopulas+0xba>
cmpb   $0x3e,(%r15,%rax,1)
jne    1382 <replaceWithCanonicalCopulas+0x262>
mov    %ecx,%eax
mov    %dil,(%rax,%r14,1)
mov    $0x1,%eax
jmp    118b <replaceWithCanonicalCopulas+0x6b>
mov    %ecx,%eax
movb   $0x21,(%rax,%r14,1)
add    $0x3,%edx
jmp    11da <replaceWithCanonicalCopulas+0xba>
mov    %ecx,%edx
movb   $0x0,(%rdx,%r14,1)
mov    %r14,%rax
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@replaceWithCanonicalCopulas.narsese_replaced = internal global [768 x i8] zeroinitializer
@.str = [90 x i8] c"NARSESE_LEN_MAX too small, consider increasing or split input into multiple statements! \0A\00"
define i8* @replaceWithCanonicalCopulas(i8* nocapture %0, i32 %1) {
%3 = tail call i32 @memset(i8* getelementptr inbounds ([768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 0), i8 signext 32, i32 768)
%4 = icmp slt i32 %1, 254
%5 = zext i1 %4 to i32
%6 = tail call i32 @Globals_assert(i32 %5, i8* getelementptr inbounds ([90 x i8], [90 x i8]* @.str, i64 0, i64 0))
%7 = icmp sgt i32 %1, 0
br i1 %7, label %13, label %10
8: ; preds = %166
%9 = zext i32 %169 to i64
br label %10
10: ; preds = %8, %2
%11 = phi i64 [ 0, %2 ], [ %9, %8 ]
%12 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %11
store i8 0, i8* %12
ret i8* getelementptr inbounds ([768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 0)
13: ; preds = %2, %166
%14 = phi i32 [ %168, %166 ], [ 0, %2 ]
%15 = phi i32 [ %169, %166 ], [ 0, %2 ]
%16 = sext i32 %14 to i64
%17 = getelementptr inbounds i8, i8* %0, i64 %16
%18 = load i8, i8* %17
switch i8 %18, label %56 [
i8 44, label %19
i8 91, label %23
i8 123, label %33
i8 125, label %43
i8 93, label %43
i8 62, label %43
i8 60, label %47
]
19: ; preds = %13
%20 = zext i32 %15 to i64
%21 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %20
store i8 32, i8* %21
%22 = add nsw i32 %14, 1
br label %166
23: ; preds = %13
%24 = zext i32 %15 to i64
%25 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %24
store i8 40, i8* %25
%26 = add nuw nsw i32 %15, 1
%27 = zext i32 %26 to i64
%28 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %27
store i8 39, i8* %28
%29 = add nuw nsw i32 %15, 2
%30 = zext i32 %29 to i64
%31 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %30
store i8 32, i8* %31
%32 = add nsw i32 %14, 1
br label %166
33: ; preds = %13
%34 = zext i32 %15 to i64
%35 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %34
store i8 40, i8* %35
%36 = add nuw nsw i32 %15, 1
%37 = zext i32 %36 to i64
%38 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %37
store i8 34, i8* %38
%39 = add nuw nsw i32 %15, 2
%40 = zext i32 %39 to i64
%41 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %40
store i8 32, i8* %41
%42 = add nsw i32 %14, 1
br label %166
43: ; preds = %13, %13, %13
%44 = zext i32 %15 to i64
%45 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %44
store i8 41, i8* %45
%46 = add nsw i32 %14, 1
br label %166
47: ; preds = %13
%48 = add nsw i32 %14, 1
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds i8, i8* %0, i64 %49
%51 = load i8, i8* %50
%52 = icmp eq i8 %51, 45
br i1 %52, label %59, label %53
53: ; preds = %47
%54 = zext i32 %15 to i64
%55 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %54
store i8 40, i8* %55
br label %166
56: ; preds = %13
%57 = add nsw i32 %14, 1
%58 = icmp slt i32 %57, %1
br i1 %58, label %61, label %171
59: ; preds = %47
%60 = icmp slt i32 %48, %1
br i1 %60, label %102, label %171
61: ; preds = %56
switch i8 %18, label %102 [
i8 38, label %62
i8 47, label %78
i8 92, label %90
]
62: ; preds = %61
%63 = sext i32 %57 to i64
%64 = getelementptr inbounds i8, i8* %0, i64 %63
%65 = load i8, i8* %64
switch i8 %65, label %102 [
i8 47, label %66
i8 124, label %70
i8 38, label %74
]
66: ; preds = %62
%67 = zext i32 %15 to i64
%68 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %67
store i8 43, i8* %68
%69 = add nsw i32 %14, 2
br label %166
70: ; preds = %62
%71 = zext i32 %15 to i64
%72 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %71
store i8 59, i8* %72
%73 = add nsw i32 %14, 2
br label %166
74: ; preds = %62
%75 = zext i32 %15 to i64
%76 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %75
store i8 59, i8* %76
%77 = add nsw i32 %14, 2
br label %166
78: ; preds = %61
%79 = sext i32 %57 to i64
%80 = getelementptr inbounds i8, i8* %0, i64 %79
%81 = load i8, i8* %80
switch i8 %81, label %102 [
i8 49, label %82
i8 50, label %86
]
82: ; preds = %78
%83 = zext i32 %15 to i64
%84 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %83
store i8 47, i8* %84
%85 = add nsw i32 %14, 2
br label %166
86: ; preds = %78
%87 = zext i32 %15 to i64
%88 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %87
store i8 37, i8* %88
%89 = add nsw i32 %14, 2
br label %166
90: ; preds = %61
%91 = sext i32 %57 to i64
%92 = getelementptr inbounds i8, i8* %0, i64 %91
%93 = load i8, i8* %92
switch i8 %93, label %102 [
i8 49, label %94
i8 50, label %98
]
94: ; preds = %90
%95 = zext i32 %15 to i64
%96 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %95
store i8 92, i8* %96
%97 = add nsw i32 %14, 2
br label %166
98: ; preds = %90
%99 = zext i32 %15 to i64
%100 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %99
store i8 35, i8* %100
%101 = add nsw i32 %14, 2
br label %166
102: ; preds = %90, %78, %62, %61, %59
%103 = phi i32 [ %48, %59 ], [ %57, %61 ], [ %57, %62 ], [ %57, %78 ], [ %57, %90 ]
%104 = add nsw i32 %14, 2
%105 = icmp slt i32 %104, %1
br i1 %105, label %106, label %171
106: ; preds = %102
switch i8 %18, label %171 [
i8 45, label %107
i8 60, label %121
i8 61, label %135
]
107: ; preds = %106
%108 = sext i32 %103 to i64
%109 = getelementptr inbounds i8, i8* %0, i64 %108
%110 = load i8, i8* %109
%111 = icmp eq i8 %110, 45
br i1 %111, label %112, label %171
112: ; preds = %107
%113 = sext i32 %104 to i64
%114 = getelementptr inbounds i8, i8* %0, i64 %113
%115 = load i8, i8* %114
%116 = icmp eq i8 %115, 62
br i1 %116, label %117, label %157
117: ; preds = %112
%118 = zext i32 %15 to i64
%119 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %118
store i8 58, i8* %119
%120 = add nsw i32 %14, 3
br label %166
121: ; preds = %106
%122 = sext i32 %103 to i64
%123 = getelementptr inbounds i8, i8* %0, i64 %122
%124 = load i8, i8* %123
%125 = icmp eq i8 %124, 45
br i1 %125, label %126, label %171
126: ; preds = %121
%127 = sext i32 %104 to i64
%128 = getelementptr inbounds i8, i8* %0, i64 %127
%129 = load i8, i8* %128
%130 = icmp eq i8 %129, 62
br i1 %130, label %131, label %171
131: ; preds = %126
%132 = zext i32 %15 to i64
%133 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %132
store i8 61, i8* %133
%134 = add nsw i32 %14, 3
br label %166
135: ; preds = %106
%136 = sext i32 %103 to i64
%137 = getelementptr inbounds i8, i8* %0, i64 %136
%138 = load i8, i8* %137
switch i8 %138, label %171 [
i8 47, label %139
i8 61, label %148
]
139: ; preds = %135
%140 = sext i32 %104 to i64
%141 = getelementptr inbounds i8, i8* %0, i64 %140
%142 = load i8, i8* %141
%143 = icmp eq i8 %142, 62
br i1 %143, label %144, label %171
144: ; preds = %139
%145 = zext i32 %15 to i64
%146 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %145
store i8 36, i8* %146
%147 = add nsw i32 %14, 3
br label %166
148: ; preds = %135
%149 = sext i32 %104 to i64
%150 = getelementptr inbounds i8, i8* %0, i64 %149
%151 = load i8, i8* %150
%152 = icmp eq i8 %151, 62
br i1 %152, label %153, label %171
153: ; preds = %148
%154 = zext i32 %15 to i64
%155 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %154
store i8 36, i8* %155
%156 = add nsw i32 %14, 3
br label %166
157: ; preds = %112
%158 = sext i32 %104 to i64
%159 = getelementptr inbounds i8, i8* %0, i64 %158
%160 = load i8, i8* %159
%161 = icmp eq i8 %160, 62
br i1 %161, label %171, label %162
162: ; preds = %157
%163 = zext i32 %15 to i64
%164 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %163
store i8 33, i8* %164
%165 = add nsw i32 %14, 3
br label %166
166: ; preds = %19, %33, %53, %66, %74, %86, %98, %117, %144, %162, %153, %131, %94, %82, %70, %43, %23, %171
%167 = phi i32 [ 1, %19 ], [ 3, %33 ], [ 1, %53 ], [ 1, %66 ], [ 1, %74 ], [ 1, %86 ], [ 1, %98 ], [ 1, %117 ], [ 1, %144 ], [ 1, %162 ], [ 1, %153 ], [ 1, %131 ], [ 1, %94 ], [ 1, %82 ], [ 1, %70 ], [ 1, %43 ], [ 3, %23 ], [ 1, %171 ]
%168 = phi i32 [ %22, %19 ], [ %42, %33 ], [ %48, %53 ], [ %69, %66 ], [ %77, %74 ], [ %89, %86 ], [ %101, %98 ], [ %120, %117 ], [ %147, %144 ], [ %165, %162 ], [ %156, %153 ], [ %134, %131 ], [ %97, %94 ], [ %85, %82 ], [ %73, %70 ], [ %46, %43 ], [ %32, %23 ], [ %172, %171 ]
%169 = add nuw nsw i32 %15, %167
%170 = icmp slt i32 %168, %1
br i1 %170, label %13, label %8
171: ; preds = %135, %139, %107, %106, %148, %126, %121, %59, %56, %102, %157
%172 = phi i32 [ %48, %59 ], [ %57, %56 ], [ %103, %102 ], [ %103, %157 ], [ %103, %121 ], [ %103, %126 ], [ %103, %148 ], [ %103, %106 ], [ %103, %107 ], [ %103, %139 ], [ %103, %135 ]
%173 = zext i32 %15 to i64
%174 = getelementptr inbounds [768 x i8], [768 x i8]* @replaceWithCanonicalCopulas.narsese_replaced, i64 0, i64 %173
store i8 %18, i8* %174
br label %166
}